宏任务和微任务

导读:

  1. 什么是宏任务
  2. 什么是微任务
  3. 两者有什么区别

 1. 什么是宏任务macroTask(也称为Task)?

宏任务:包含执行整体的js代码、事件回调(DOM事件),XHR回调(异步请求,接口回调),定时器(setTimeout/setInterval/setImmediate-->node环境),IO(input和output,文件的读出和写入等)操作,事件队列,UI render

2. 什么是微任务microTask?

微任务:更新应用程序状态的任务,包括Promise.[then/catch/finally]回调,async/await,MutationObserver(浏览器环境),process.nextTick(Node独有,注册函数的优先级比Promise回调函数要高),Object.observe,MutationObserver

 3. 两者有什么区别?  

3.1 宏任务执行是在DOM渲染之后,遵循的是浏览器W3C规范,JS引擎不处理,浏览器(或nodejs)干预处理;

微任务执行是在DOM渲染之前,遵循的是JS的ES6规范,JS引擎进行处理。即,跟浏览器没有关系,可以在执行完同步代码后,统一处理,这样更快更便捷。

所以在执行过程中,微任务的触发时机更早,即微任务 --> DOM渲染 --> 宏任务

补充:火狐(86.0.1)的有关DOM渲染和宏任务以及微任务的执行顺序是—— DOM --> 微任务 -->宏任务

3.2 宏任务执行队列在Callback Queue中,微任务执行队列在microTask Queue

延伸:JS的单线程指的是,只有一个线程用来执行JS函数,宏任务的监听和触发交给浏览器的线程执行,中间插入GUI渲染引擎进行DOM渲染

参考文章:

浅谈浏览器 eventloop 与 Nodejs eventloop 的不同点 ——文章中涉及到的宏任务与微任务的概念以及涉及到了浏览器和nodejs两者的eventloop之间的不同

JS引擎线程

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值