JS的宏任务和微任务

机制原理如下:

注意一点
宏任务需要 多次 事件循环才能执行完,微任务是 一次性 执行完的;

宏任务 macrotask

1.事件队列中的每一个事件都是一个macrotask

2.优先级:主代码块 > setImmediate > MessageChannel > setTimeout / setInterval

3.举个栗子:setImmediate指定的回调函数,总是排在setTimeout前面

微任务 microtask

优先级:process.nextTick > Promise > MutationObserver

举个栗子

1.下面这个代码输出结果是什么?

2.揭晓答案:
主程序和和settimeout都是宏任务,两个promise是微任务
第一个宏任务(主程序)执行完,执行全部的微任务(两个promise),再执行下一个宏任务(settimeout),所以结果为:

同时欢迎关注我的个人微信公众号:

分享到:
Disqus 加载中...

如果长时间无法加载,请针对 disq.us | disquscdn.com | disqus.com 启用代理