requestAnimationFrame是JavaScript中的一个方法。它的本质实际上是为了解决定时器(setIntervar)或者setTimeout的计时不稳定的问题。与传统的setTimeout或setInterval方法相比,requestAnimationFrame有以下优势:
- 自动优化性能:requestAnimationFrame会根据浏览器的重绘频率来调整动画的帧率,避免造成掉帧或卡顿现象,可以获得更加流畅的动画效果。
-
节省电量:由于requestAnimationFrame会在浏览器的下一次重绘时执行回调函数,可以减少不必要的计算,从而节省电量。
-
在后台标签页暂停:当页面被切换到后台标签页时,requestAnimationFrame会自动暂停执行,避免消耗不必要的资源。
浏览器的刷新频率是60HZ,也就是每秒60次,一帧也就是1000 / 60 = 16.67ms。这是浏览器的刷新频率。一般都是会在16ms左右。如果是大于16或者17对用户的体验是不会友好的。所以我们在平时做动画中的使用requestAnimationFrame可以优化动画性能,会更加流畅。
setTimeout和setInterval都是宏任务,虽然我给定其一个时间,但其实是不稳定的