javascript - 在 requestIdleCallback 中使用 requestAnimationFrame

标签 javascript dom requestanimationframe requestidlecallback

如果我通过 JS 对 DOM 中的更改进行动画处理(例如,将节点的 textContent 的值从 1 更改为 500),那么使用 requestAnimationFramerequestAnimationFrame 会更好吗?在 requestIdleCallback 中?

最佳答案

如果您想对某些代码进行动画处理,则仅使用 requestAnimationFrame,如果您只想在浏览器无事可做时执行某个操作,则使用 requestIdleCallback >.

为了简化事情,让我们考虑 requestAnimationFramerequestIdleCallback 都是带有变量超时参数的 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/

相关文章:

javascript - jQuery .each() 从 0 以外的索引开始

javascript - JQuery获取输入值

javascript - requestAnimationFrame 在函数的开头或结尾?

javascript - 如何在 Fabric.js 中停止/取消 requestAnimFrame()

javascript - Winston包中的模块是如何导出的?

javascript - 验证箭头函数参数数量的好方法?

javascript - 如何控制UIWebView的javascript

jQuery 选择第 1 个元素 "level"

java - 从 Url 创建 DOM 文档

javascript - 等待 requestAnimationFrame 完成(通过回调)