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