返回等待值 returns 一个 Promise? (es7 async/await)
Returning an awaited value returns a Promise? (es7 async/await)
const ret = () => new Promise(resolve => setTimeout( () => resolve('somestring'), 1000));
async function wrapper() {
let someString = await ret();
return someString;
}
console.log( wrapper() );
它记录 Promise { <pending> }
;
为什么它 return 是 Promise 而不是 'somestring'
?
我正在使用 Babel ES7 预设来编译它。
异步函数return 承诺。为了做你想做的事,试试这样的事情
wrapper().then(someString => console.log(someString));
您也可以像其他异步函数上下文中的其他承诺一样等待 wrapper()
。
console.log(await wrapper());
如果你想让你的异步函数立即return一个值,你可以使用Promise.resolve(theValue)
async waitForSomething() {
const somevalue = await waitForSomethingElse()
console.log(somevalue)
return Promise.resolve(somevalue)
}
IMO async await 关键字还需要一个,解决
写出来就好了
return 解析 'hello'
或者只是
resolve 'hello'
const ret = () => new Promise(resolve => setTimeout( () => resolve('somestring'), 1000));
async function wrapper() {
let someString = await ret();
return someString;
}
console.log( wrapper() );
它记录 Promise { <pending> }
;
为什么它 return 是 Promise 而不是 'somestring'
?
我正在使用 Babel ES7 预设来编译它。
异步函数return 承诺。为了做你想做的事,试试这样的事情
wrapper().then(someString => console.log(someString));
您也可以像其他异步函数上下文中的其他承诺一样等待 wrapper()
。
console.log(await wrapper());
如果你想让你的异步函数立即return一个值,你可以使用Promise.resolve(theValue)
async waitForSomething() {
const somevalue = await waitForSomethingElse()
console.log(somevalue)
return Promise.resolve(somevalue)
}
IMO async await 关键字还需要一个,解决
写出来就好了 return 解析 'hello'
或者只是
resolve 'hello'