我的意思是一次调用具有相同功能的多个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()方法时,用户代理必须运行以下步骤:
...
- 将方法的参数附加到文档的动画帧回调列表中
和
当用户代理现在要使用时间戳为文档doc运行动画帧回调时,它必须运行以下步骤:
...
- 对于回调中的每个条目,按顺序:调用回调
所以对于你的问题:
会发生什么?会重复吗?在同一帧中会被调用两次吗?还是将其堆叠并在不同的框架上调用?
综上所述,连续调用将被添加到一个回调列表中,所有这些调用将按照浏览器运行它们时添加它们的顺序依次执行,实际上是Draw
在代码中复制了。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句