setTimeOut得到233帧每秒而requestAnimationFrame得到61帧每秒。

5
我在Chrome上进行了一些测试,requestAnimationFrame的帧率为61 fps,而setTimeOut(callback,0)的帧率为233 fps。
如果有人想要超过61 fps(我不确定用于什么),但是使用setTimeOut渲染并仅使用requestAnimationFrame检测窗口何时失去焦点,然后停止超时直到焦点返回,这样不是更好吗?
另外一个问题:除了requestAnimationFrame未调用回调之外,是否还有其他方法可以检测窗口何时失去焦点?
1个回答

12

requestAnimationFrame函数与您的显示器刷新率同步(在屏幕上实际显示的帧数之外,没有必要动画更多帧)

以下是来自 Mozilla 文档的参考链接:https://developer.mozilla.org/en/DOM/Animations_using_MozBeforePaint

帧速率控制

MozBeforePaint 每秒不会触发超过一定数量的次数,例如50或60。这是有意为之的,因为现代操作系统和硬件不会让浏览器显示更多帧。限制帧速率避免了浪费工作,从而节省 CPU 使用和功耗,并提高了整个系统的性能。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接