如果我通过 JS 对 DOM 中的更改进行动画处理(例如,将节点的 textContent 的值从 1 更改为 500),那么使用 requestAnimationFrame
或 requestAnimationFrame
会更好吗?在 requestIdleCallback
中?
最佳答案
如果您想对某些代码进行动画处理,则仅使用 requestAnimationFrame
,如果您只想在浏览器无事可做时执行某个操作,则使用 requestIdleCallback
>.
为了简化事情,让我们考虑 requestAnimationFrame
和 requestIdleCallback
都是带有变量超时参数的 setTimeout
调用。
requestAnimationFrame
将是 setTimeout(fn, time_until_next_screen_refresh)
。 fn
将在页面绘制到屏幕之前被调用。这是目前我们制作动画的最佳计时器,因为它确保我们只在每个实际帧中以显示器能够渲染的速度(因此在每一帧)进行一次视觉修改,如果我们的代码很快的话够了。
requestIdleCallback
将是 setTimeout(fn, time_until_idle)
。一旦浏览器无事可做,fn
就会被调用。这可以立即进行,也可以在几个事件循环迭代中进行。
因此,虽然两者都有相似的 API,但它们提供了完全不同的功能,并且唯一可行的动画制作方法是 requestAnimationFrame
,因为 requestIdleCallback
基本上没有任何链接与渲染。
关于javascript - 在 requestIdleCallback 中使用 requestAnimationFrame,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61145102/