一、前言
本篇文章的目的是解释清楚事件循环中的宏任务与微任务,还是三个问题着手:
- 什么是宏任务与微任务?
- 为什么需要微任务?
- 微任务(promise)的应用?
二、什么是宏任务与微任务?
宏任务
主线程任务队列中的任务:
- 加载的js文件执行
- 各种交互事件
- 浏览器渲染事件
- setTimeout,setInterval定时器
- I/O线程加入的事件
微任务
主线程运行时,调用栈中维护的队列:
- promise
- MutationObserver
代码示例:
const promise = new Promise(resolve => {
console.log('promise start')
console.log('add setTimeout1')
setTimeout(_ => {
console.log('setTimeout1 start')
resolve()
}, 0)
console.log('add setTimeout2')
setTimeout(_ => console.log('setTim