setInterval() - 但只运行一次

时间:2016-11-16 19:20:01

标签: javascript html

如果我多次调用更新函数,我会运行此间隔的多个实例。我怎样才能确定每个idVar只触发一次?

例如,如果我使用相同的idVar连续两次运行,我每秒会得到两次更新,其中只有一次更新。

如果idVar不同,它应该运行多次。 idVar用于Update()。

intervals[idVar] = setInterval(function() {
    update();                            
}, 1000);

4 个答案:

答案 0 :(得分:1)

intervals[idVar] = setTimeout(function() {
    update();                            
}, 1000);

答案 1 :(得分:1)

如果你真的需要使用setInterval并且不想使用setTimeout,你可以在输入函数时清除它

例如

var interval

interval = setInterval(function(){
   clearInterval(interval)
  //Your code
});

答案 2 :(得分:0)

如果你真的想要为每个唯一的idVar运行一个新的间隔实例,你只需要检查你是否已经有一个当前idVar运行的间隔实例:

WeekNumber Week 44  Week 45 Week 46
A          66       53      49
B          23%      21%     18%

答案 3 :(得分:0)

setInterval 会返回用于识别它的 timeoutID

要停止setInterval,请将其传递给clearInterval

  

说明为什么要运行两个间隔

     

执行此操作时:

intervals[idVar] = setInterval(function() { update(); }, 1000);
intervals[idVar] = setInterval(function() { update(); }, 1000);
     

你在做的是:

     
      
  • 首先致电 <{em> setInterval并将intervals[idVar]设置为第一个setInterval's timeoutID

  •   
  • 使用 的超时ID,拨打第二个setInterval覆盖存储在intervals[idVar]中的值强>叫   setInterval

  •   
     

结果:两个单独的时间间隔,intervals[idVar]存储第二个的超时ID,称为

的setTimeout

setTimeout与setInterval类似,实际上使用相同的超时ID池,但只在指定的延迟后调用一次。

  

每个idVar

设置一个间隔(setTimeout或setInterval)
var idVar = setInterval(function() { 
                          update(); 
                        }, 1000);  // sets idVar to the timeoutID and starts the interval
}
intervals[idVar] = idVar;  // assigns a property 'idVar' on `intervals`
                           // and sets the timeoutID as its value
                           // allows you to call clearInterval(intervals[idVar]);
     

但是,如果不确切知道您的update()方法正在做什么,很难说出最佳解决方案是什么......