如果我多次调用更新函数,我会运行此间隔的多个实例。我怎样才能确定每个idVar只触发一次?
例如,如果我使用相同的idVar连续两次运行,我每秒会得到两次更新,其中只有一次更新。
如果idVar不同,它应该运行多次。 idVar用于Update()。
intervals[idVar] = setInterval(function() {
update();
}, 1000);
答案 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与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()
方法正在做什么,很难说出最佳解决方案是什么......