requestAnimationFrame 了解多少

requestAnimationFrame 是一种优化动画性能的方法,它会在浏览器重绘之前执行指定的回调函数。相比于传统的 setIntervalsetTimeout 方法,requestAnimationFrame 会在浏览器的下一次重绘之前执行回调函数,能够更好地与浏览器的渲染机制结合,减少页面的卡顿和闪烁。

requestAnimationFrame 的使用方法如下:

let animationId;

function animate() {
  animationId = requestAnimationFrame(animate);
  // 在这里执行动画代码
}

animate(); // 启动动画

在上面的代码中,requestAnimationFrame 方法返回一个唯一的标识符,可以用来取消动画,如下所示:

cancelAnimationFrame(animationId); // 取消动画

需要注意的是,requestAnimationFrame 并不一定每秒都会执行 60 次,它会根据浏览器的刷新频率来自动调整执行次数,保证动画的流畅性。同时,由于 requestAnimationFrame 是在浏览器的主线程中执行,如果动画计算量过大,会占用过多的 CPU 资源,导致页面的卡顿和性能问题。因此,需要合理使用 requestAnimationFrame,避免在单个动画中进行复杂的计算。