宏任务和微任务
宏任务,macrotask,也叫 tasks。
一些异步任务的回调会依次进入macro task queue,等待后续被调用,这些异步任务包括:
- setTimeout
- setInterval
- setImmediate (Node独有)
- requestAnimationFrame (浏览器独有)
- I/O
- UI rendering (浏览器独有)
微任务,microtask,也叫 jobs。
另一些异步任务的回调会依次进入micro task queue,等待后续被调用,这些异步任务包括:
- process.nextTick (Node独有)
- Promise.then()
- Object.observe
- MutationObserver
- queueMicrotask
(注:这里只针对浏览器和NodeJS)
注意:Promise构造函数里的代码是同步执行的。