异步函数返回一个promise

时间:2017-11-20 22:57:18

标签: javascript node.js promise async-await

我在网上找到了一个如下所示的示例:

async function asyncFunc() {
    return Promise.resolve(123);
}
asyncFunc()
  .then(x => console.log(x)) // 123

但是,我也可以这样写:

async function asyncFunc() {
    return 123
}
asyncFunc()
  .then(x => console.log(x)) // 123

我的意思是,我可以找到一个用于返回已解决的答案的用例(例如,memoization / caching),但是如果我可以直接返回结果,为什么还要实际使用它呢?

1 个答案:

答案 0 :(得分:6)

来自https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/async_function

  

当调用异步函数时,它返回一个Promise。 当异步函数返回一个值时,将使用返回的值解析Promise。当异步函数抛出异常或某个值时,将使用抛出的值拒绝Promise。

强调我的。

虽然在第一种情况下返回已解决的承诺是不必要的,但您的示例都是完全有效的。任何返回普通值的异步函数都会自动将该值包装到已解析的promise中。我认为通常人们更喜欢第二个例子,因为它更直接。