在requestIdleCallback中使用requestAnimationFrame

问题描述 投票:0回答:1

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

javascript dom requestanimationframe requestidlecallback
1个回答
0
投票

如果要为某些代码制作动画,则仅使用requestAnimationFrame,如果仅当浏览器不再需要其他操作时才执行操作,则使用requestIdleCallback

为简单起见,让我们考虑requestAnimationFramerequestIdleCallback都是setTimeout调用,并带有变量超时参数。

requestAnimationFrame将是setTimeout(fn, time_until_next_screen_refresh)。在页面绘制到屏幕之前,将立即调用fn。目前这是我们制作动画的最佳计时器,因为它可以确保我们仅以实际显示帧的速度,以监视器能够呈现的速度(仅在我们的代码快速的情况下,在每一帧)对视觉帧进行一次视觉修改。足够。

requestIdleCallback将是setTimeout(fn, time_until_idle)。浏览器无事可做时,将立即调用fn。这可以立即进行,也可以在一些事件循环中进行迭代。

因此,尽管两者都有相似的API,但它们提供的功能完全不同,并且唯一可行的动画制作方法是requestAnimationFrame,因为requestIdleCallback基本上与渲染没有任何链接。

© www.soinside.com 2019 - 2024. All rights reserved.