浏览器中的事件循环机制:
1. js代码浏览器执行中,事件循环机制除了按照函数调用机制进行执行以外,还要依靠事件任务队列来进行一些代码逻辑的执行,这个整体的过程我们叫做事件循环,一个线程中,事件循环是唯一的,但是任务队列可以拥有多个。任务队列又分为 macro-task(宏任务)和 micro-task(微任务)
macro-task(宏任务) 大概包括:
- script(整体代码)
- setTimeout
- setInterval
- setImmediate
- I / O
- UI render
micro-task(微任务) 大概包括:
- process.nextTick
- Promise.then
- async / await (等价于 Promise.then)
- MutationObserver(HTML5 新特性)
总体结论就是:
- 执行宏任务
- 然后执行宏任务产生的微任务
- 若微任务在执行过程中产生了新的微任务,则继续执行微任务
- 微任务执行完毕,再回到宏任务中进行下一轮循环