Skip to content
On this page

EventLoop

宏任务(MacroTask):

setTimeout、setInterval、setImmediate(浏览器暂时不支持,只有IE10支持,具体可见MDN)、I/O、UI Rendering。

MicroTask(微任务)

Process.nextTick(Node独有)、Promise、Object.observe(废弃)、MutationObserver(具体使用方式查看这里)

Javascript 有一个 main thread 主线程和 call-stack 调用栈(执行栈),所有的任务都会被放到调用栈等待主线程执行

js
const promise = new Promise((resolve, reject) => {
  console.log(1);
  setTimeout(() => {
    console.log(2);
    resolve("success");
    console.log(3); // 执行该任务会反复确认微任务是否为空
  }, 0);
  console.log(4);
});
promise.then((res) => {
  console.log(5);
});
console.log(6);
//146235