异步函数中的隐式 Promise
在 JavaScript 中,异步函数是可以异步等待 Promise 完成并返回其值的函数。然而,一个常见的误解是异步函数隐式返回其返回值的承诺。
理解返回值
虽然异步函数可能隐式返回一个承诺,这并不完全准确。异步函数的返回值可以是以下两种之一:
非承诺值示例:
async function increment(num) { return num + 1; } increment(3).then(num => console.log(num)); // Logs: 4
这里,我们从异步函数返回一个数字。然而,输出是通过 .then() 检索的,表明它是一个已解析为值 4 的 Promise。
显式 Promises:
如果我们从异步函数显式返回一个 Promise,我们收到该值的 Promise,而不是某个值的 Promise
async function increment(num) { return Promise.resolve(num + 1); } increment(3).then(num => console.log(num)); // Logs: 4
例外情况:
结论
JavaScript 中的异步函数隐式包装非 Promise 返回值在一个承诺中。但是,如果返回值已经是一个 Promise,则保持不变。这种行为与传统的 return 语句不同,但与 ES6 中生成器的基本原理一致。
以上是JavaScript 中的异步函数总是返回 Promise 吗?的详细内容。更多信息请关注PHP中文网其他相关文章!