准确的计时器,setTimeout无法处理窗口模糊

时间:2015-05-28 13:32:57

标签: javascript

我使用此功能制作一个准确的间隔https://gist.github.com/manast/1185904,但问题是当我失去了窗口的焦点时,计时器变得疯狂,有些想法?

使用此代码:

function interval(duration, fn){
  this.baseline = undefined

  this.run = function(){
    if(this.baseline === undefined){
      this.baseline = new Date().getTime()
    }
    fn()
    var end = new Date().getTime()
    this.baseline += duration

    var nextTick = duration - (end - this.baseline)
    if(nextTick<0){
      nextTick = 0
    }
    (function(i){
        i.timer = setTimeout(function(){
        i.run(end)
      }, nextTick)
    }(this))
  }

this.stop = function(){
   clearTimeout(this.timer)
 }
}

0 个答案:

没有答案