安全地清除JavaScript超时

时间:2014-10-04 19:28:06

标签: javascript timer

我创建了一个执行以下操作的JavaScript函数:

function myFunction() {
    DoStuff;
    watch = setTimeout(myFunction, 1000);
}

,其中

watch

是一个最初设置为null的全局变量。

然后,我有第二个函数,可以随时调用,形式为:

function mySecond() {
    DoStuff;
    clearTimeout(watch);
}

现在,有时会发生这种情况,虽然调用了第二个函数并且以某种方式清除了超时,但是第一个函数被另一个时间调用。我猜这种情况正在发生,因为当调用第二个函数时,已经发送了对第一个函数的请求,因此计时器再次工作,并且一直在反复调用...我想指出这个总是不会发生,我想这取决于您可能遇到的具体时间条件。

如何安全地删除所有再次调用第一个函数的可能性?

1 个答案:

答案 0 :(得分:2)

此代码的问题是watch仅保留最后一次超时。这应该解决它

function myFunction() {
      DoStuff;
      if (watch) { clearTimeout(watch); }
      watch = setTimeout(myFunction, 1000);
}