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

异步函数总是返回 Promise 吗?

Mary-Kate Olsen
发布: 2024-12-25 02:09:12
原创
809 人浏览过

Do Async Functions Always Return Promises?

问题:异步函数是否隐式返回 Promise?

在 JavaScript 中,异步函数是使用 async 关键字声明的,并且通常被认为会自动返回回报承诺。但是,这会引发潜在的不一致:当显式返回非 Promise 值时,该函数似乎将该值包装在 Promise 中。

答案:所有异步函数都返回 Promises

观察到的行为是正确的:所有异步函数都隐式返回 Promise。具体来说:

  • 当异步函数在没有显式返回语句的情况下返回时,它返回一个解析为未定义的 Promise。
  • 当异步函数显式返回非 Promise 值时,它会包装Promise 中的值解析为该值。
  • 即使异步函数包含等待表达式,返回的值仍然是一个 Promise,包装了以下结果wait 表达式。
  • 如果异步函数内抛出错误,则返回的 Promise 会因该错误而被拒绝。

示例:

async function increment(num) {
  return num + 1;
}

// Logs 4, as the returned promise resolves to 4.
increment(3).then(num => console.log(num));
登录后复制

包裹行为:

这个包装行为是生成器函数所独有的。例如,生成器函数也返回 Promise,但方式不同:

function* foo() {
  return 'test';
}

// Logs an object, not "test".
console.log(foo());

// Logs 'test' by explicitly calling .next() on the generator function.
console.log(foo().next().value);
登录后复制

以上是异步函数总是返回 Promise 吗?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板