代码执行顺序
setImmediate(() => {
console.log('本轮事件循环结束,下次事件循环未开始之前执行(setImmediate)', 1)
})
setTimeout(() => console.log('异步宏任务后执行,若无其他任务,本轮事件循环结束',9), 0)
setTimeout(() => console.log('下一轮事件循环开始执行(宏任务)',3), 100)
console.log('同步执行(运行栈)',2)
new Promise((resolve, reject) => {
console.log('同步执行',6)
resolve()
})
.then(() => {
console.log('异步微任务先执行(then)', 8)
})
process.nextTick(() => {
console.log('同步之后执行(process.nextTick)', 5)
})
同步执行(运行栈) 2
同步执行 6
同步之后执行(process.nextTick) 5
异步微任务先执行(then) 8
异步宏任务后执行,若无其他任务,本轮事件循环结束 9
本轮事件循环结束,下次事件循环未开始之前执行(setImmediate) 1
下一轮事件循环开始执行(宏任务) 3