17
const ret = () => new Promise(resolve => setTimeout( () => resolve('somestring'), 1000));

async function wrapper() {
    let someString = await ret();
    return someString;
}

console.log( wrapper() );

它记录Promise { <pending> };为什么它返回一个 Promise 而不是'somestring'

我正在使用 Babel ES7 预设来编译它。

4

2 回答 2

19

异步函数返回承诺。为了做你想做的事,试试这样的

wrapper().then(someString => console.log(someString));

您也可以wrapper()像其他异步函数的上下文中的其他承诺一样等待。

console.log(await wrapper());
于 2016-10-02T00:06:24.227 回答
3

如果你希望你的异步函数立即返回一个值,你可以使用 Promise.resolve(theValue)

async waitForSomething() {
    const somevalue = await waitForSomethingElse()
    console.log(somevalue)

    return Promise.resolve(somevalue)
}

IMO async await 关键字还需要一个,解决

最好写 return resolve 'hello'

要不就

resolve 'hello'
于 2017-10-16T11:49:30.040 回答