我在网上找到了一个如下所示的示例:
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),但是如果我可以直接返回结果,为什么还要实际使用它呢?
答案 0 :(得分:6)
来自https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/async_function:
当调用异步函数时,它返回一个Promise。 当异步函数返回一个值时,将使用返回的值解析Promise。当异步函数抛出异常或某个值时,将使用抛出的值拒绝Promise。
强调我的。
虽然在第一种情况下返回已解决的承诺是不必要的,但您的示例都是完全有效的。任何返回普通值的异步函数都会自动将该值包装到已解析的promise中。我认为通常人们更喜欢第二个例子,因为它更直接。