requestAnimationFrame与setTimeout的区别

本文探讨了使用setTimeout和setInterval制作JavaScript动画的问题,如间隔时间不精确、资源过度消耗及动画流畅度受影响。通过对比,介绍了requestAnimationFrame方法的优势,包括系统性能最大化、浏览器优化及更稳定的帧数控制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

以往常常使用 setTimeout 以及 setInterval 方法来制作 JavaScript 动画,但是这种方式制作的动画经常会由于计时器的特性而带来一些问题。简单地说一下,计时器动画有以下几个问题。

  • 间隔时间不精确,可能被阻塞。计时器的间隔指的是将回调函数推入任务队列的间隔时间,任务队列中的任务只有在主线程任务执行完毕后才会被执行。
  • 计时器动画的间隔时间如果设定过短就会出现过度渲染占用大量资源,如果设定过长就会影响动画的流畅度。只能够估计合适的时间间隔。
  • 多数浏览器对于计时器动画没有优化。

使用 requestAnimationFrame 方法来定义动画就不会出现以上这些问题。

  • requestAnimationFrame 动画的帧数是由系统根据当前页面是否可见,CPU 的占用情况等等来决定的,可以最大化地利用系统性能。
  • 浏览器对 requestAnimationFrame 动画进行了优化。

 

转载于:https://www.cnblogs.com/codejoker/p/10503251.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值