一直有面试题以及技术帖提到Node中的事件循环中,有一个被称为macrotask
的东西(另一个是microtask
)。一直都知道有task和microtask的区分,但不太清楚什么是macrotask。甚至在spec以及谷歌V8官方的技术博客中也没有提到macrotask,最多无非就是task(见下图)。于是就想要稍微查下。
其实之前就有读过两篇文章:
今天再仔细读了下,其实很简单:
所谓的macrotask其实就是一直提到的事件循环task
。
因为microtask会在当前事件循环中全部处理清空完毕,因此其执行优先级是比macrotask高的。当某些业务逻辑可以放在Promise.resolve
中,也可以放在setTimeout
中的话,两者的先后关系就有点微妙了,需要理解上述的顺序关系才不会出错。
EOF