requestAnimationFrame

244 阅读1分钟

requestAnimationFrame 定义

requestAnimationFrame是HTML5的新特性,区别于setTimeout和setInterval。requestAnimationFrame比后两者精确,采用系统时间间隔,保持最佳绘制效率,不会因为间隔时间过短,造成过度绘制,增加开销;也不会因为间隔时间太长,使动画卡顿不流畅,让各种网页动画效果能够有一个统一的刷新机制,从而节省系统资源,提高系统性能,改善视觉效果。

requestAnimationFrame 使用

基本使用

requestAnimationFrame(() => {
    console.log('基本使用')
})

此时会在下次浏览器刷新的时候打印 基本使用

取消事件

const animationFrame = requestAnimationFrame(() => {
    console.log('取消事件')
})

cancelAnimationFrame(animationFrame)

cancelAnimationFrame 方法会取消还没发生的事件函数的执行,但是一般都等不到那时候。

循环调用

const callback = () => {
    console.log('循环调用')
    requestAnimationFrame(callback)
}

requestAnimationFrame(callback)

在需要循环调用的函数中通过递归的方式实现循环调用