Skip to content

事件循环

异步任务、宏任物、微任务、函数调用栈。

异步任务的类型(Web APIs)

宏任物

微任务

🌰 看一个例子 🌰

js
console.log("每");

setTimeout(function () {
  console.log("身");

  Promise.resolve().then(() => {
    console.log("不");
  });

  new Promise(function (resolve) {
    console.log("体");
    resolve();
  })
    .then(function () {
      console.log("生");
    })
    .then(function () {
      console.log("锈");
    });
}, 10); //进入WebApis进程(事件触发线程),10s后放入任务队列,在第二轮宏任务中执行

setTimeout(function () {
  console.log("次");
}, 0); //进入WebApis进程(事件触发线程),0s后放入任务队列,在第二轮宏任务中执行

Promise.resolve().then(() => {
  console.log("动");
});

new Promise(function (resolve) {
  console.log("周");
  resolve("_gagaga_");
}).then(function (res) {
  console.log("两");
  return res;
});

// 输出结果:每 周 动 两 Promise {<fulfilled>: '_gagaga_'} 次 身 体 不 生 锈

参考我的这篇 事件循环 公众号文章

js 并发模型与事件循环

Released under the MIT License.