我们已经使用以下代码启动了计时器。如果另一个计时器在传递给window.setInterval
方法的方法上处于活动状态,是否可以使window.setInterval方法失败?
GInterValId = window.setInterval("AutoRefresh()",parseInt(GRefreshInterval));
答案 0 :(得分:1)
如果你跟踪window.setInterval()的结果结果,你可以随时停止前一个间隔计时器。
var GInterValId = setInterval(AutoRefresh, parseInt(GRefreshInterval));
然后,当你想重置它时:
if (GInterValId) {
clearInterval(GInterValId);
}
GInterValId = setInterval(AutoRefresh, parseInt(GRefreshInterval));
另请注意,我没有将字符串传递给setInterval,而是传递实际的JS函数。
或者,如果您只是想阻止设置另一个间隔:
var GInterValId = null; // initialize
// then, when you want to set it, check to see if it's already been set
if (GInterValId) {
GInterValId = setInterval(AutoRefresh, parseInt(GRefreshInterval));
}
答案 1 :(得分:1)
你要做的是为此建立一个系统。创建一个处理所有计时器的对象:
var Timer = function () {
var currentTimer;
this.setTimer = function (func,time) {
if (currentTimer) {
alert("one timer already set");
}else {
currentTimer = setInterval(func,time);
}
}
this.stopTimer = function () {
clearInterval(currentTimer);
currentTimer = null;
}
}
现在您可以使用此代码:
function doSomething() {...} // function example
function doSomethingElse() {...} // function example
var MyTimer = new Timer();
MyTimer.setTimer(doSomething,1000); // this will run
MyTimer.setTimer(doSomethingElse,1000); // this will not run
第二个不会运行,因为另一个是活动的。 为了使它工作,你已经清楚了第一个。
MyTimer.stopTimer(); // will clear the current timer then you can run another one
MyTimer.setTimer(doSomethingElse,1000); // will run perfectly