现在我们看看宏任务,微任务 宏任务{ settimeout setInterval I/O 事件 UI交付事件 postMessage MessageChannel setImmediate }
微任务{ Promise.then Object.observe MutaionObserver process.nextTick(Node.js 环境) }
setTimeout(_ => console.log(4))
new Promise(resolve => {
resolve()
console.log(1)
}).then(_ => {
console.log(3)
})
console.log(2)
setTimeout(_ => console.log(6), 5000)//创建宏任务
setTimeout(_ => console.log(4), 3000)//创建宏任务
new Promise(resolve => { //创建一个微任务
resolve()
console.log(1)
}).then(_ => {
console.log(3)
Promise.resolve().then(_ => {
console.log('before timeout')
setTimeout(() => { //增加宏任务
console.log(5);
}, 0);
for (let i = 0; i < 90; i++) {//增加一个微任务
if (i == 89) {
console.log(7);
}
}
}).then(_ => { //增加一个微任务
Promise.resolve().then(_ => {
console.log('also before timeout')
})
})
})
console.log(2)