requestAnimationFrame做定时器不准,设置1000毫秒打印一次时间,后面执行的会跳一秒,有的会打印两次一样的时间
这种怎么处理比较好?
requestAnimationFrame做定时器不准,设置1000毫秒打印一次时间,后面执行的会跳一秒,有的会打印两次一样的时间
这种怎么处理比较好?
8 回答4.8k 阅读✓ 已解决
6 回答3.5k 阅读✓ 已解决
5 回答2.9k 阅读✓ 已解决
6 回答2.4k 阅读
5 回答6.4k 阅读✓ 已解决
4 回答2.3k 阅读✓ 已解决
4 回答2.8k 阅读✓ 已解决
不知道你出于什么考虑用
requestAnimationFrame
做定时器,如果你了解requestAnimationFrame
的工作原理,那你就知道它为什么不准了。首先浏览器有一个帧的概念,浏览器每秒刷新60次,每次时隔1/60s,也就是一帧。这一帧内,浏览器会接受输入,执行事件回调,开始一帧,执行requestAnimationFrame
,然后是布局、渲染,有空闲时间再执行requestIdleCallback
。看上去没啥问题,但是你没法保证每一帧里js执行的时间,如果js同步执行时间过长,那么这一帧的时间就会超过,导致浏览器每秒没法刷新60次,也就是出现了页面的卡顿,所以你用requestAnimationFrame
做定时器是没法保证间隔是稳定的。