首页 >web前端 >js教程 >异步 JavaScript 函数总是返回 Promise 吗?

异步 JavaScript 函数总是返回 Promise 吗?

Patricia Arquette
Patricia Arquette原创
2024-12-23 16:20:12355浏览

Do Async JavaScript Functions Always Return Promises?

异步函数和隐式 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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn