Promise 构造函数是同步执行还是异步执行,那么 then 方法呢?

发布于 2024-09-04 23:45:58 字数 1399 浏览 23 评论 0

在 JavaScript 中, Promise 构造函数和 then 方法有不同的执行方式:

1. Promise 构造函数

  • 同步执行 : 当你创建一个 Promise 实例时,构造函数的执行是同步的。传递给 Promise 构造函数的执行器函数(executor function)会立即被调用。例如:
  new Promise((resolve, reject) => {
    console.log("构造函数执行");
    resolve("完成");
  });
  console.log("构造函数外部代码");

输出会是:

  构造函数执行
  构造函数外部代码

在这个例子中, console.log("构造函数执行") 会在 console.log("构造函数外部代码") 之前执行。

2. then 方法

  • 异步执行 : then 方法的回调函数是异步执行的。尽管 then 方法的调用是同步的,但传入 then 的回调函数会在当前执行栈清空后,才会被执行。这是因为 then 回调会被加入到微任务队列(microtask queue),而微任务会在宏任务(如 setTimeout )之前执行。
  new Promise((resolve, reject) => {
    resolve("完成");
  }).then((result) => {
    console.log("then 回调");
  });

  console.log("then 外部代码");

输出会是:

  then 外部代码
  then 回调

在这个例子中, console.log("then 回调") 会在 console.log("then 外部代码") 之后执行。

总结

  • Promise 构造函数的执行是同步的。
  • then 方法的回调函数是异步执行的,尽管 then 方法本身的调用是同步的。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

0 文章
0 评论
22 人气
更多

推荐作者

linfzu01

文章 0 评论 0

可遇━不可求

文章 0 评论 0

枕梦

文章 0 评论 0

qq_3LFa8Q

文章 0 评论 0

JP

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文