码迷,mamicode.com
首页 > 其他好文 > 详细

宏任务和微任务

时间:2019-10-25 18:31:15      阅读:98      评论:0      收藏:0      [点我收藏+]

标签:ati   col   next   imm   audio   全局   observer   mis   spl   

javasript宿主环境有事件循环,异步任务会被加入到任务队列,任务队列分为两种,宏任务(macroTask)和微任务(microTask)。

宏任务队列会有多个,微任务队列只有一个。

每次事件循环,先执行微任务队列,执行完后,会选择一个宏任务队列执行,然后再次执行微任务队列,完成后再挑一个宏任务队列执行..

总之,就是 microTask queue -> macroTask queue -> microTask queue -> macroTask queue ....

结果是,微任务会先于宏任务执行。

Microtasks:

process.nextTick
promise
Object.observe
MutationObserver

Macrotasks:

setTimeout
setInterval
setImmediate
script(全局任务)
I/O(例如ajax)
UI渲染

优先级:process.nextTick > promise ,  setImmediate > setTimeout

速记:微任务,所有p开头的和观察的;宏任务,所有set开头的,以及大块操作,例如script标签,IO,UI渲染

宏任务和微任务

标签:ati   col   next   imm   audio   全局   observer   mis   spl   

原文地址:https://www.cnblogs.com/mengff/p/11739189.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!