宏观任务与微观任务详解

3,659 阅读1分钟

关于宏观任务与微观任务;

定义:宿主(浏览器)发起的任务我们可以称之为宏观任务(macrotask);引擎(js)自己也可以发起任务,这个任务就叫做微观任务(microtask)

从根本上来讲js是单线程语言,首先执行的肯定是同步队列,对于异步操作只能先把它放在一边。同步就不多赘述。

那么那些发起的是宏观哪些发起的是微观;

宏观任务

script、setTimeout、setInterval、I/O、UI交互事件、postMessage、MessageChannel、setImmediate(Node.js 环境);

微观任务

promise async await  

所以整体的执行顺序为:

同步任务>微观任务>宏观任务

比如下面案例

首先是同步队列log(4) ==>async1==>async2==>promise==>log8

微观任务 log(2)==>log(7)

宏观任务settimeout

所以输出的结果41368275==》

昨天阿里菜鸟面试,今天就收到驳回邮件,之前还能坚持两三轮,备受打击。估计问题出在这里。感觉就这没答好。亡羊补牢吧。希望后来者遇到好好发挥。

WEBGL探索之路 (二)--webgl场景构建
WEBGL探索之路 (一)--认识webgl
js循环中如果操作了原数组会发生什么?
字节头条面试踩坑arguments
js函数柯里化
强缓存与协商缓存属性定义集合
React Context 的理解以及应用
react shoudcomponentupdate 停止渲染 vue为什么不需要
深拷贝浅拷贝的十一种方法
import和require的区别比较
vue Vue $nextTick 深度解析
深度揭秘 Promise 微任务注册和执行过程
v8引擎如何执行一段js代码的?
http3.0 2.0 1.0区别比较
宏观任务与微观任务详解