V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
az22c
V2EX  ›  前端开发

挖坟:浏览器“微任务执行时间”总是从属于“某段宏任务的执行时间”?

  •  2
     
  •   az22c · 2023-01-09 16:55:16 +08:00 · 1036 次点击
    这是一个创建于 695 天前的主题,其中的信息可能已经有所发展或是发生改变。

    看到这个 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 个命题的看法是什么呢?欢迎指正

    8 条回复    2023-02-24 12:03:46 +08:00
    ZoeeoZ
        1
    ZoeeoZ  
       2023-01-09 17:02:52 +08:00   ❤️ 1
    🤣我看过很多关于宏任务,微任务的文章,除去那些低级的,复制的,面试笔记类的,真的一个人一个说法
    az22c
        2
    az22c  
    OP
       2023-01-09 17:09:21 +08:00
    @ZoeeoZ #1 同感,我这里基本不涉及到“宏任务微任务谁先执行”的讨论。这里本质上还是“宏任务”这词的定义的问题,然后解决清楚这个问题,看 chrome 控制台火焰就比较清晰。然后应对网上一些说“xxx 也是宏任务”这种扩充,需要认真考究,不然越来越模糊,产生“鸡同鸭讲” 的局面
    az22c
        3
    az22c  
    OP
       2023-01-09 17:17:44 +08:00
    还有人把处理“关键渲染路径”也就是计算渲染页面相关的步骤,也当做是“宏任务”。这种说法在网上很常见
    ZoeeoZ
        4
    ZoeeoZ  
       2023-01-09 17:18:15 +08:00
    @az22c 我之前看到一个比较靠谱的讨论:
    js 中到底有没有宏任务这个概念? - 紫云飞的回答 - 知乎
    https://www.zhihu.com/question/560193382/answer/2719657486
    az22c
        5
    az22c  
    OP
       2023-01-09 17:39:07 +08:00
    @ZoeeoZ #4 我觉得这个知乎回帖里面有两句话:

    > "宏任务就是任务"
    >
    > "新的 postTask 是统一了之前那些用来 post task 的 API ,比如 setTimeout 、postMessage 、requestAnimationFrame 、requestIdleCallback 。"

    这么说,可以推导 requestAnimationFrame 、requestIdleCallback 也是宏任务。但是我发的那个 html 规范 里面,requestAnimationFrame 、requestIdleCallback 是属于"Update the rendering"的过程,只能说是宏任务的其中一环。那不是结论前后矛盾嘛?

    https://html.spec.whatwg.org/multipage/webappapis.html#event-loop-processing-model
    ZoeeoZ
        6
    ZoeeoZ  
       2023-01-09 17:46:49 +08:00
    @az22c 所以才说混乱嘛..按这篇文章的观点的话,是不存在"宏任务"这个概念的. 我猜这个名词的出现是因为"micro task"的出现,为了作区分才有了与之相对的"宏任务"
    fernandoxu
        7
    fernandoxu  
       2023-02-12 00:31:37 +08:00   ❤️ 1
    @az22c #5 可能是这样吧,就根本没宏任务(macro task)这个词。。但是各种教程包括英文的老多都这么说
    az22c
        8
    az22c  
    OP
       2023-02-24 12:03:46 +08:00
    @fernandoxu 这个研究工作太难做了。找不到源头
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3434 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 11:28 · PVG 19:28 · LAX 03:28 · JFK 06:28
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.