setInterval、setTimeout 和 requestAnimationFrame
setTimeout setTimeout
延时执行某一段代码,但setTimeout
由于EventLoop
的存在,并不百分百是准时的,一个setTimeout
可能会表示如下的形式:
复制代码
setInterval: setInterval
在指定的时间内,重复执行一段代码,与setTimeout
类似,它也不是准时的,并且有时候及其不推荐使用setInterval
定时器,因为它与某些耗时的代码配合使用的话,会存在执行积累的问题,它会等耗时操作结束后,一起一个或者多个执行定时器,存在性能问题。一个setInterval
可能会表示如下的形式:
复制代码
requestAnimationFrame: 翻译过来就是请求动画帧,它是 html5 专门用来设计请求动画的 API,它与setTimeout
相比有如下优势:
根据不同屏幕的刷新频率,自动调整执行回调函数的时机。
当窗口处于未激活状态时,
requestAnimationFrame
会停止执行,而setTimeout
不会自带函数节流功能
复制代码
如若转载,请注明出处:开源字节 https://sourcebyte.cn/article/171.html
评论