Event-Lop
执行顺序:
- 一开始整个脚本作为一个宏任务执行
- 执行过程中同步代码直接执行,宏任务进入宏队列,微任务进入微任务队列
- 当前宏任务执行完出队,检查微任务列表,有则依次执行,直到全部执行完毕
- 执行浏览器UI线程的渲染工作
- 检查是否有Web Worker任务,有则执行
- 执行完本轮宏任务,回到2,依此循环,直到宏任务和微任务队列都为空
微任务:MutationObserver、Promise.then或catch、Promise为基础开发的其它技术,比如fetch API、V8的垃圾回收过程、Node独有的process.nextTick
宏任务:script、setTimeout、SetInterval、setImmediately、I/O、UI rendering