异步函数和隐式 Promise 返回
在 JavaScript 中,由 async 关键字标记的异步函数隐式返回 Promise。即使您显式返回非 Promise 值或根本不返回任何内容,这也成立。
隐式 Promise 包装器
如果您不显式返回Promise,你返回的值会自动包裹在一个promise中。
async function increment(num) { return num + 1; } // Logs: 4 increment(3).then(num => console.log(num));
这意味着即使返回值是一个数字,出于异步处理的目的,它将被转换为 Promise。
Unwrapped Promises
Promises 自动解包,这意味着如果您确实返回在异步函数中承诺某个值时,您将收到该值的承诺(而不是针对该值的承诺)
async function increment(num) { return defer(() => num + 1); } // Logs: 4 increment(3).then(num => console.log(num));
不一致的行为
异步函数的行为确实看起来与传统的 return 语句不一致,因为它在显式返回非承诺值时有所不同。这是因为异步函数使用一种称为生成器的特殊函数,它并不总是返回与 return 语句相同的值。
以上是异步 JavaScript 函数总是返回 Promise 吗?的详细内容。更多信息请关注PHP中文网其他相关文章!