宏任务和微任务
| 宏任务 | 浏览器 | Node |
|---|---|---|
| I/O | √ | √ |
| setTimeout | √ | √ |
| setInterval | √ | √ |
| setImmediate | × | √ |
| requestAnimationFrame | √ | √ |
| 微任务 | 浏览器 | Node |
|---|---|---|
| process.nextTick | × | √ |
| MutationObserver | √ | × |
| Promise.then / catch / finally | √ | √ |
经典例子:
银行柜台前排着一条队伍,都是存钱的人,存钱属于宏任务,这条队伍就是宏任务队列,当一个‘宏大爷’被叫到了自己的号码,就上前去--被处理,处理存钱业务时,‘宏大爷’突然想给自己的存款办个微理财(
微任务),那么银行职员就将他的需求添加到自己的微任务队列,大爷就不用再排队了,直接在存钱宏任务进行完后就处理衍生出来的微任务理财,办理财时大爷又说办个信用卡,那就又排到微任务队列里。但要是在此次存钱时‘宏大爷’说他还要存钱,且是他老伴要存钱,也是宏任务,但不好意思,需要取号到宏任务队列的后面排队(这里就是在宏任务进行时产生微任务和宏任务的处理方式)作者:蟹黄同学 链接:juejin.cn/post/695636… 来源:掘金 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。