为了账号安全,请及时绑定邮箱和手机立即绑定

setTimeout, requestTimeFrame刷新率谁小

setTimeout, requestTimeFrame刷新率谁小

汪汪一只猫 2019-04-21 20:14:35
最近做一个尽量快的counter,遇到一些疑惑:为什么setTimeout的刷新率能比requestAnimationFrame高?除了setTimeout1微秒以外,还能更快的计数吗?setTimeout方式以1微秒去计数,数到1000大致花了6.5svari=0;functionloop(){if(i==1000){console.log('end');}else{doSomething();setTimeout(loop,1);}}functiondoSomething(){document.body.innerHTML=i++;}以requestAnimationFrame去数到1000,大致花了16.7s。刷新率大致是1s/60vari=0;functionstep(){if(i==1000){//16717console.log('end');}else{document.body.innerHTML=i++;requestAnimationFrame(step);}}requestAnimationFrame(step);
查看完整描述

2 回答

?
神不在的星期二

TA贡献1963条经验 获得超6个赞

requestAnimationFrame不需要使用者指定循环间隔时间,浏览器会基于当前页面是否可见、CPU的负荷情况等来自行决定最佳的帧速率,从而更合理地使用CPU。所以你这么比没什么意义啊,因为你这个doSomething太简单了,如果进行一些复杂的操作有可能会发生阻塞,也就说不清谁快谁慢了不是?
                            
查看完整回答
反对 回复 2019-04-21
?
慕哥6287543

TA贡献1831条经验 获得超10个赞

setTimeout设置为1肯定比requestAnimationFrame快,requestAnimationFrame是根据浏览器的设备绘制间隔来决定的。
关于这两个的讨论可以看看张鑫旭的博客
                            
查看完整回答
反对 回复 2019-04-21
  • 2 回答
  • 0 关注
  • 337 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信