当我多次调用requestAnimationFrame时会发生什么

泰国

我的意思是一次调用具有相同功能的多个requestAnimationFrame

function Draw() { /* DoSomething */ }
function AFunc() {
    /* prepare something */
    requestAnimationFrame(Draw);
}
function BFunc() {
    /* prepare something */
    requestAnimationFrame(Draw);
}

window.onload(function(){
   AFunc();
   BFunc();
});

会发生什么?会重复吗?在同一帧中会被调用两次吗?还是将其堆叠并在不同的框架上调用?

詹姆斯·索普

MDN文档中

回调方法传递一个单独的参数DOMHighResTimeStamp,该参数指示由requestAnimationFrame排队的回调开始触发的当前时间。因此,即使在计算每个先前回调的工作量时已经过去了时间,单个帧中的多个回调仍会接收相同的时间戳该时间戳是一个十进制数,以毫秒为单位,但是最小精度为1ms(1000 µs)。

(强调我的)

另外,从规范

调用requestAnimationFrame()方法时,用户代理必须运行以下步骤:

...

  1. 将方法的参数附加到文档的动画帧回调列表中

当用户代理现在要使用时间戳为文档doc运行动画帧回调时,它必须运行以下步骤:

...

  1. 对于回调中的每个条目,按顺序:调用回调

所以对于你的问题:

会发生什么?会重复吗?在同一帧中会被调用两次吗?还是将其堆叠并在不同的框架上调用?

综上所述,连续调用将被添加到一个回调列表中,所有这些调用将按照浏览器运行它们时添加它们的顺序依次执行,实际上是Draw在代码中复制了

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

当我调用“ BufferStrategy.show()”时会发生什么?

当我们调用puppeteer waitForSelector API时会发生什么

当我调用rdd.join(rdd)时会发生什么

当我在C ++中对未初始化的指针调用“删除”时会发生什么?

当我在console.log中调用console.log时会发生什么?

当我在嵌套的 React 组件中调用作为 props 传递的函数时会发生什么?

通用 C - 当我调用“struct *s”时会发生什么?

当我分配大于字节的值时会发生什么?

当我使用多个模拟时间时会发生什么?

当我取消订阅 Observable 链时会发生什么?

当我放弃对iOS 6的支持时会发生什么?

当我使用'|'时会发生什么 或'<',c ++

当我将%esp移至%ebp时会发生什么?

当我在Xcode IDE中“保存”时会发生什么

当我忘记登录TTY时会发生什么?

当我截断正在使用的文件时会发生什么?

当我不输入期望的命令时会发生什么?

当我用引用而不是拥有的值调用std :: mem :: drop时会发生什么?

当我在先前定义的通过ajax调用的函数中使用相同的变量名时会发生什么?

当我们在 Bean 是单例的情况下调用 new Bean() 时会发生什么?

当我尝试使用进程ID小于-1的kill时会发生什么?

当我从RAM运行持久性存储实时USB时会发生什么情况?

当我重命名 git repo 的父目录时会发生什么?

当我们不等待异步方法时会发生什么

itemgetter如何工作?当我们将其初始化为密钥时会发生什么

当我们在 C++ 中使用“while”时会发生什么转换?

当我们在Python的类中给出函数定义时会发生什么

当我将Object.assign设置为javascript中的原始类型时会发生什么?

当我在lambda函数中启动新线程并返回时会发生什么