资讯详情

js倒计时的纠偏实现?

我们可以想象一个场景,在一些购物中心,我们会发现倒计时越来越慢,所以我们需要继续F5刷新的目的是向服务器要求最新的倒计时数据。在这个时候,我们可以考虑为什么会成这种情况的原因是什么?这是因为我们在前端从服务端要求倒计时数据,js它也是单线程语言,所以我们每次都使用它setTimeoutsetInterval倒计时是将其放入任务队列,等待主线程执行。如果主线程有大量耗时的操作,此时会造成延迟问题。

//时间间隔 const interval = 1000 //总时间 let totalTime = 20000 //用来计数次数 let count = 0 ////开始倒计时时间 let lastTimer = new Date().getTime() let timer = null timer = setTimeout(func, interval)  function func() { 
          count    let delaytimer = new Date().getTime() - (interval * count   lastTimer)   if (delaytimer < 0) { 
            delaytimer = 0   }   let nextTimer = interval - delaytimer   totalTime -= interval   console.log(`当前延迟了${ 
         delaytimer}ms, 下一次执行${ 
         nextTimer}ms, 还剩下${ 
         totalTime}ms。`)   if (totalTime <= 0) { 
            clearTimeout(timer)
  } else { 
       
    timer = setTimeout(func, nextTimer)
  }
}

上述代码的原理是:记录当前时间和理论时间之间的时间间隔,并不断对下一次定时器时间进行校正。

标签: 纠偏传感器光电开关hw

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

 锐单商城 - 一站式电子元器件采购平台  

 深圳锐单电子有限公司