我创建了一个带有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()。
可能是什么问题?
编辑:此代码现在有效。
答案 0 :(得分:4)
我建议你通过停止前一次来“消毒”超时。
function interval() {
clearTimeout(intervalID);
intervalID = setTimeout(countDown, 1000);
}
然而,它看起来像控制症状而不是疾病的原因。因此,最好找出问题的原因。