首页 > web前端 > js教程 > JavaScript 中的异步函数:隐式承诺还是显式返回值?

JavaScript 中的异步函数:隐式承诺还是显式返回值?

Susan Sarandon
发布: 2024-12-17 18:36:12
原创
702 人浏览过

Async Functions in JavaScript: Implicit Promise or Explicit Return Value?

异步函数:隐式承诺返回还是显式控制?

JavaScript 中的异步函数,由 async 关键字表示,通常被认为是隐式的回报承诺。然而,仔细检查就会发现,现实情况更加微妙。

默认情况下,如果未显式返回 Promise,异步函数确实会返回 Promise。这意味着以下代码:

async function getVal() {
  const result = await doSomethingAsync();
  return result;
}
登录后复制

相当于:

async function getVal() {
  const result = await doSomethingAsync();
  return Promise.resolve(result);
}
登录后复制

但是,如果您显式返回非承诺值,该函数将自动将其包装在承诺中。例如,在下面的示例中:

async function getVal() {
  return doSomethingNonAsync();
}
登录后复制

getVal 实际上会返回一个包含 doSomethingNonAsync() 结果的 Promise 对象。

值得注意的是,这种行为与传统的 JavaScript 函数不同。当您从常规函数显式返回原始值时,它会立即返回。然而,异步函数总是返回一个 Promise,根据需要包装非 Promise 值。

这可能看起来不一致,但它与 ES6 中生成器的概念相吻合。生成器是返回与其 return 语句不同的值的函数。相反,它们产生一系列值,可以使用yield运算符迭代这些值。

例如:

function* getVal() {
  yield doSomethingAsync();
  return 'finished';
}

// Logs an object.
console.log(getVal());

// Logs 'yikes' and then 'finished'.
for (const val of getVal()) {
  console.log(val);
}
登录后复制

以上是JavaScript 中的异步函数:隐式承诺还是显式返回值?的详细内容。更多信息请关注PHP中文网其他相关文章!

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