我创建了一个执行以下操作的JavaScript函数:
function myFunction() {
DoStuff;
watch = setTimeout(myFunction, 1000);
}
,其中
watch
是一个最初设置为null的全局变量。
然后,我有第二个函数,可以随时调用,形式为:
function mySecond() {
DoStuff;
clearTimeout(watch);
}
现在,有时会发生这种情况,虽然调用了第二个函数并且以某种方式清除了超时,但是第一个函数被另一个时间调用。我猜这种情况正在发生,因为当调用第二个函数时,已经发送了对第一个函数的请求,因此计时器再次工作,并且一直在反复调用...我想指出这个总是不会发生,我想这取决于您可能遇到的具体时间条件。
如何安全地删除所有再次调用第一个函数的可能性?
答案 0 :(得分:2)
此代码的问题是watch
仅保留最后一次超时。这应该解决它
function myFunction() {
DoStuff;
if (watch) { clearTimeout(watch); }
watch = setTimeout(myFunction, 1000);
}