我创建了一个带有setTimeout函数的循环,它在调用它本身的第二或第三步之后出现问题,因为它当时开始执行两次.这就是我的功能:
var value = 70,
intervalID = null;
function interval() {
intervalID = setTimeout(countDown, 1000);
}
function countDown() {
value--;
if(value > 0) {
clearTimeout(intervalID);
interval();
} else {
endInterval();
}
}
function endInterval() {
// do something
}
如果我将变量值控制为69,68,之后在一次函数调用中开始减少变量值两次.我不是从一个地方调用函数countDown().
可能是什么问题呢?
编辑:此代码现在有效.
解决方法:
我建议你通过停止前一个来“消毒”超时.
function interval() {
clearTimeout(intervalID);
intervalID = setTimeout(countDown, 1000);
}
然而,它似乎控制症状而不是疾病的原因.因此,最好找出问题的原因.