返回期待值会返回一个Promise吗? (es7 async / await)

时间:2016-10-01 23:38:50

标签: javascript async-await ecmascript-2017

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预设来编译它。

2 个答案:

答案 0 :(得分:12)

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

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

您也可以在wrapper()上等待来自其他异步函数上下文的其他承诺。

console.log(await wrapper());

答案 1 :(得分:2)

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

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

    return Promise.resolve(somevalue)
}

IMO异步等待关键字还需要一个,解决

写起来会很好     返回解决&#39;你好&#39;

或只是

resolve 'hello'