js的微任务和宏任务
Posted 明明一颗大白菜
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js的微任务和宏任务相关的知识,希望对你有一定的参考价值。
1.机制如下:
注意一点:
宏任务需要多次事件循环才能执行完,微任务是一次性执行完的;
2.宏任务macrotask:
(事件队列中的每一个事件都是一个macrotask)
优先级:主代码块 > setImmediate > MessageChannel > setTimeout / setInterval
比如:setImmediate指定的回调函数,总是排在setTimeout前面
3.微任务包括:
优先级:process.nextTick > Promise > MutationObserver
4.举个栗子:
(1)下面这个代码输出结果是什么?(先不要看下面的答案,自己想一想)
(2)揭晓答案:
主程序和和settimeout都是宏任务,两个promise是微任务
第一个宏任务(主程序)执行完,执行全部的微任务(两个promise),再执行下一个宏任务(settimeout),所以结果为:
以上是关于js的微任务和宏任务的主要内容,如果未能解决你的问题,请参考以下文章
详解队列在前端的应用,深剖JS中的事件循环Eventloop,再了解微任务和宏任务