js async / await返回promise

时间:2017-11-13 08:33:49

标签: javascript node.js

只做一个简单的功能:

 async function doAsync() {
 return await "test"
 }

 console.log(doAsync())

输出:承诺{[[PromiseStatus]]: "pending", [[PromiseValue]]: undefined}

可能出现什么问题?

1 个答案:

答案 0 :(得分:2)

async函数返回一个promise。 始终。您必须在该承诺上使用.then()await才能获得该值。

doAsync().then(val => {
    console.log(val);
});

虽然asyncawait有时允许您在函数本身内编写更多同步代码,但它们并不能从根本上将异步操作更改为同步操作。

async函数仍会返回一个承诺,获取其值的唯一方法是在其上使用.then()await。如果您在链中返回值,则最终需要使用.then()来获取值。

有关异步功能,请参阅MDN description。这是一个引用:

  

返回值

     

一个Promise,它将使用async函数返回的值进行解析,或者在异步函数中抛出未捕获的异常而被拒绝。