码迷,mamicode.com
首页 > Web开发 > 详细

js的微任务和宏任务

时间:2019-02-19 16:26:51      阅读:308      评论:0      收藏:0      [点我收藏+]

标签:回调函数   mes   func   immediate   循环   val   ati   media   nextTick   

1.机制如下:

技术图片
技术图片

注意一点:

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

 

 

 

2.宏任务macrotask:

(事件队列中的每一个事件都是一个macrotask)

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

比如:setImmediate指定的回调函数,总是排在setTimeout前面

 

 

 

3.微任务包括:

优先级:process.nextTick > Promise > MutationObserver

 

 

 

 

4.举个栗子:

(1)下面这个代码输出结果是什么?(先不要看下面的答案,自己想一想)

技术图片

(2)揭晓答案:

主程序和和settimeout都是宏任务,两个promise是微任务

第一个宏任务(主程序)执行完,执行全部的微任务(两个promise),再执行下一个宏任务(settimeout),所以结果为:

技术图片

js的微任务和宏任务

标签:回调函数   mes   func   immediate   循环   val   ati   media   nextTick   

原文地址:https://www.cnblogs.com/mmykdbc/p/10401759.html

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