首页 > web前端 > js教程 > JavaScript 中的 async/await 是否总是返回 Promise,为什么?

JavaScript 中的 async/await 是否总是返回 Promise,为什么?

Barbara Streisand
发布: 2024-12-12 11:54:10
原创
798 人浏览过

Does async/await in JavaScript Always Return a Promise, and Why?

async/await:Promise 揭晓

Promise 是 JavaScript 中异步编程的一个基本方面。当谈到 async/await 时,重要的是要揭开异步函数总是返回 Promise 的概念。

await 关键字放置在返回 Promise 的函数调用之前,会暂停当前函数的执行,直到Promise 要么被解决,要么被拒绝。然而,这次暂停并没有解除承诺。 Promise 的结果仍然封装在返回的 Promise 对象中。

为了说明这一点,请考虑以下模拟异步请求的代码:

const getJSON = async () => {
  const request = () => new Promise((resolve, reject) => (
    setTimeout(() => resolve({ foo: 'bar' }), 2000)
  ));

  const json = await request();
  return json;
};
登录后复制

调用 getJSON() 时,它返回a Promise,因为await语句只是暂停执行直到请求完成:

console.log(getJSON()); // returns Promise
登录后复制

相反,当链接.then(),Promise的结果终于暴露了:

getJSON().then(json => console.log(json)); // prints { foo: 'bar' }
登录后复制

为什么不能用console.log(getJSON())绕过Promise包装?这是 Promise 的基本属性。 Promise 代表异步操作,在解决或拒绝之前,它们的结果是未知的。有意禁止对结果的外部访问,以确保 Promise 仍然是结果的唯一中介。

请记住,async/await 通过在遇到 Promise 时暂停执行来使使用 Promise 变得更加方便,但它并没有无需解开 Promise 来访问其结果。

以上是JavaScript 中的 async/await 是否总是返回 Promise,为什么?的详细内容。更多信息请关注PHP中文网其他相关文章!

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