浏览器中默认当前栈(宏任务)执行完毕后会清空微任务列表,微任务清空完成之后取下一个宏任务执行,执行过程中如果注册一些微任务,会在执行下一次宏任务之前再清空一次微任务......
先认识一下宏任务和微任务都有哪些
宏任务
浏览器 | Node | |
setTimeout | √ | √ |
setInterval | √ | √ |
setImmediate | x | √ |
requestAnimationFrame | √ | x |
微任务
浏览器 | Node | |
process.nextTick | x | √ |
MutationObserver | √ | x |
Promise.then catch finally | √ | √ |