setInterval越来越快问题的解决方法

JavaScript是运行在单线程的环境中的,所以这就意味着定时器就成了要执行的计划!而不是必须要执行的铁律! 为啥呢? 当函数开始执行时在栈中创建出来一个栈帧,这个栈帧的执行是需要时间的,假设有3秒,在这三秒内,JavaScript的单线程特点就会确保在这3秒内全力的专一的去解决掉这个栈帧(函数)。所以在这个函数运行的时候定时器是没有能力终止他的运行的,因此当函数的运行时间大于间隔时间时,间隔时间1秒到了,但是程序还有2秒没有执行完,那你也给我老老实实的等着函数执行完!!!

总结一下:       js单线程,假如你每2秒执行一次的函数,自己执行的时间都大于2s,那么

                         单线程就会先保证你的函数执行完,再去回过头去看定时器搞完没。

                         也就是,定时器加入3s执行一次,但是你的函数都要搞2s才执行完,那js单线程啊,一看时间不够了,马上切

                         那也就是你想的是3s执行一次,但是你的函数都占了2s,那其实就是1s就执行了。快了吧!!

                          但其实,还是理解的不够透彻,这里只是理解了他为什么快了,但是为什么越来越快呢?

这里存疑,

1、因为其实我肉眼很难判断出是不是越来越快,我只是感觉到他快了 

2、如果真的是越来越快,可能是

函数执行越来越慢了,也就是代码占用资源越来越多,导致越来越慢,那留给定时器的时间就越来越少,导致越来越快的感觉

解决办法:

如果是做动画效果,那就建议用

                       

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值