Samgao0312 / Blog

MIT License
1 stars 1 forks source link

【再学前端】window.requestAnimationFrame #136

Open Samgao0312 opened 2 years ago

Samgao0312 commented 2 years ago

介绍

requestAnimationFrame 是浏览器用于定时循环操作的一个接口,类似于setTimeout,主要用途是按帧对网页进行重绘。requestAnimationFrame 方法会告诉浏览器希望执行动画并请求浏览器在下一次重绘之前调用回调函数来更新动画。 简单的讲requestAnimationFrame就是一个以屏幕刷新率间隔时间的定时器,requestAnimationFrame回调函数执行频率紧跟刷新频率且执行在重绘之前。

requestAnimationFrame 使用一个回调函数作为参数。这个回调函数会在浏览器重绘之前调用。

requestID = window.requestAnimationFrame(callback);

优势

缺点

不过有一点需要注意,requestAnimationFrame是在主线程上完成。这意味着,如果主线程非常繁忙,requestAnimationFrame的动画效果会大打折扣。

与setTimeout/setInterval的区别

requestAnimationFrame(code),一般用于动画,与 setTimeout 方法类似,区别是 setTimeout 是用户指定的,而 requestAnimationFrame 是浏览器刷新频率决定的,一般遵循 W3C 标准,它在浏览器每次刷新页面之前执行。