看到这个 html 规范 里面对 event loop 的 Processing model 的规定,处理每个 task(姑且认为它是指“宏任务”) 的时候会执行步骤“Perform a microtask checkpoint”,对于这步下面有进一步的详细说明,效果相当于是执行完目前批次一堆的 microtask 。由此可以认为如题 [标题的结论] 是正确的
这也难怪网上很多人,有类似的说法:
[第二个问题] :
我认为 这个老哥他文章 把 chrome 控制台火焰图 “灰色 Task”当做是某个宏任务,他得出了结论:
“requestAnimationFrame 回调、requestIdleCallback 回调、GC 、html 中的 script 等都是宏任务”
最后,说说个人对以上 2 个命题的 1 个看法:
-
猜想:chrome 控制台“灰色 Task”代表的就是 html 规范 里面 Processing model 里面的 task 。同时 task 不 应该被视为“宏任务”。“宏任务”应该是很久之前某个老外发明的词语,特指用来总结 setTimeout 回调、setInterval 回调等等,用于总结了这么一堆“宏任务”。这些“宏任务”在火焰图里面体现为“‘灰色 Task’下级的 Function Call 片段的下级时间片段”
- 这么来说,标题的结论也是错的
- 这么来说, [第二个问题] 里面的老哥说错了
你对这 2 个命题的看法是什么呢?欢迎指正