- macrotasks: setTimeout setInterval setImmediate I/O UI渲染
- microtasks: Promise process.nextTick Object.observe MutationObserver
process.nextTick(() => {
console.log('nextTick')
})
Promise.resolve()
.then(() => {
console.log('then')
})
setImmediate(() => {
console.log('setImmediate')
})
console.log('end')
//end
//nextTick
//then
//setImmediate
//解釋:process.nextTick 和 promise.then 都屬于 microtask调榄,
而 setImmediate 屬于 macrotask小染,在事件循環(huán)的 check 階段執(zhí)行晤锥。
事件循環(huán)的每個(gè)階段(macrotask)之間都會(huì)執(zhí)行 microtask倔毙,
事件循環(huán)的開始會(huì)先執(zhí)行一次 microtask肋演。
參考:
https://juejin.im/entry/58332d560ce46300610e4bad
https://segmentfault.com/a/1190000008866165
http://www.jb51.net/article/57882.htm