js事件循环机制
浏览器中的事件循环机制
javascript代码的执行过程中,除了依靠函数调用栈来搞定函数的执行顺序外,还依靠任务队列来搞定对另外一些代码的执行。整个执行过程,我们称为事件循环过程。
一个线程中,事件循环是唯一的,但是任务队列可以拥有多个。任务队列又分为宏任务(macro- task)和微任务(micro-task),在最新标准中,它们又被称为tasks与jobs:
macro-task(宏任务)包括:
- script(整体代码)
- setTimeout
- setInterval
- setImmediate
- I/O
- UI/render
micro-task(微任务)包括:
- process.nextTick
- Promise
- Async/Await
- html5新特性(MutationObserver)
总结:
执行宏任务-执行该宏任务产生的微任务-若微任务执行过程中产生了新的微任务,则继续执行微任务-微任务执行完毕后,再回到宏任务中进行下一轮的循环。