JavaScript 的任务循环中有两种队列:
- 宏任务队列(也直接称作任务队列)--(macro)task queue
- 微任务队列-- microtask queue
常见的宏任务与微任务
宏任务 (Macro)task |
setTimeout ,setInterval , setImmediate
|
微任务 Microtask |
process.nextTick , Promise callback , queueMicrotask
|
执行顺序
- 栈中的函数返回值后,出栈.
- 如果栈空, 微任务队列里的所有微任务依次入栈,
并且执行.(微任务自身还能产生新的微任务) - 栈空且微任务队列空,取出下一个宏任务入栈执行.
重复1~3
网友评论