宏任务和微任务
宏任务:
- setTimeout
- setInterval
- setImmediate
- requestAnimationFrame
- I/O
- UI rendering
微任务:
- process.nextTick
- Promises
- queueMicrotask
- MutationObserver
事件循环算法(尽管与 规范 相比仍然是简化过的):
- 从
宏任务
队列中出队并执行最早的任务。 - 执行所有
微任务
:- 当微任务队列非空时:
- 出队并执行最早的微任务。
- 如果有变更,则将变更渲染出来。
- 如果宏任务队列为空,则休眠直到出现宏任务。
- 转到步骤 1。