哪个队列与 requestAnimationFrame 关联?

问题描述 投票:0回答:3

今天面试时被问到这个问题。我无法回答这个问题,面试官说有一个特殊的队列用于 requestAnimationFrame 回调。但我找不到这方面的信息。

如果 rAF 有自己的队列,那么为什么这个队列从未在任何地方被提及?当我们谈论事件循环时,我们只提到宏任务队列和微任务队列?

您能否解释一下或分享有关 rAF 的精彩视频/文章的链接?

javascript event-loop requestanimationframe
3个回答
1
投票

requestAnimationFrame
特定于 Web API。作为参数给出的回调被收集在有序映射中,HTML 标准将其标识为动画帧回调映射。该地图与 HTML 文档相关联(或者在专用网络工作者的情况下与全局范围相关联)。

这个map(可以理解为一个队列),当前任务完成后进行处理,包括微任务队列的处理。该地图作为事件循环的rendering阶段的一部分被消耗。 HTML 标准指定渲染过程的第 13 步:

  1. 对于 docs 中的每个完全活动的文档,运行该文档的动画帧回调,传入 now 作为时间戳。

因此,“哪个队列”的简短答案是:HTML 标准中指定的动画帧回调映射。



0
投票
关于与

requestAnimationFrame

 相关的队列的问题:
rAF callbacks do not have their own separate queue
。相反,它们是在浏览器事件循环的特定阶段内执行的。此阶段称为事件循环的 
rendering phase
paint phase

以下是一些链接:

  1. https://developer.mozilla.org/en-US/docs/Web/API/window/requestAnimationFrame
    
    
  2. https://web.dev/animations-guide/
    
    
  3. https://www.youtube.com/watch?v=8aGhZQkoFbQ
    
    
© www.soinside.com 2019 - 2024. All rights reserved.