机制原理如下:
注意一点
宏任务需要 多次 事件循环才能执行完,微任务是 一次性 执行完的;
宏任务 macrotask
1.事件队列中的每一个事件都是一个macrotask
2.优先级:主代码块 > setImmediate > MessageChannel > setTimeout / setInterval
3.举个栗子:setImmediate指定的回调函数,总是排在setTimeout前面
微任务 microtask
优先级:process.nextTick > Promise > MutationObserver
举个栗子
1.下面这个代码输出结果是什么?
2.揭晓答案:
主程序和和settimeout都是宏任务,两个promise是微任务
第一个宏任务(主程序)执行完,执行全部的微任务(两个promise),再执行下一个宏任务(settimeout),所以结果为:
欢迎随时交流~
如果长时间无法加载,请针对 disq.us | disquscdn.com | disqus.com 启用代理