setInterval()性能问题

问题描述:

1-setIterval()中嵌套使用,但这种情况下要保证内部严格完全正确执行,否则就会造成不断调用这个方法,会造成性能变差

2-在页面关闭时没有使用clearInterval()来把所有setInterval()清除,会一直执行,性能大大降低

原因分析:

1-内部调用函数是异步操作,与服务器产生交互,网络延迟等原因造成的阻塞,setInterval不会因此放慢请求,反而仍会定时发起请求,造成请求过多阻塞

2-setInterval内部进行了嵌套,嵌套内部又调用了异步操作,因为网络等原因无法正确执行的情况下,setInterval也不会在乎,还是在不管不顾的调用错误执行中的代码,重复调用并且嵌套调用,此时就可能会出现卡死的情况

解决方法:

1、递归调用setTimeout()

例如:

function changeInterval(){

    setTimeout(()=>{

        console.log("改变Interval为timeout")

        changeInterval()

    },200)
}

changeInterval()

2、在不使用时即使调用clearInterval()或clearTimeout()方法来清除

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
确定requestAnimationFrame相对于setInterval性能提升可以通过以下几个方面进行评估: 1. 浏览器优化:requestAnimationFrame利用浏览器的优化机制来执行代码,在每一帧的最佳时机执行。这样可以避免了setInterval可能导致的阻塞和卡顿现象,提供更平滑的动画效果。 2. 帧率控制:requestAnimationFrame会在浏览器的下一次重绘之前执行代码,通常为每秒60帧。这意味着代码将以每秒60次的频率运行,而setInterval则是根据设定的时间间隔进行重复执行。如果动画不需要以固定的时间间隔进行更新,使用requestAnimationFrame可以更好地控制动画帧率,避免频繁的不必要的计算和渲染。 3. 节能模式:在移动设备上,requestAnimationFrame更加节能。由于它在设备进入休眠或隐藏页面时会自动暂停,因此可以有效减少不必要的资源消耗。 4. 减少不必要的计算:使用requestAnimationFrame可以更好地控制代码执行频率,避免了setInterval可能导致的过多计算。这样可以减少CPU和内存的消耗,提高性能。 总之,相对于setInterval,requestAnimationFrame提供了更好的性能和优化机制,特别适用于需要实现平滑动画效果的场景。但在某些情况下,setInterval也可能是合适的选择,例如需要固定时间间隔执行任务的场景。对于性能问题,最好根据具体的应用场景进行评估和测试,以确定哪种方法更适合。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值