Javascript setTimeout函数开始执行太多次

时间:2012-08-29 10:39:06

标签: javascript settimeout intervals

我创建了一个带有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()。

Javascript Interval 可能是什么问题?

编辑:此代码现在有效。

1 个答案:

答案 0 :(得分:4)

我建议你通过停止前一次来“消毒”超时。

function interval() {
  clearTimeout(intervalID);
  intervalID = setTimeout(countDown, 1000);
}

然而,它看起来像控制症状而不是疾病的原因。因此,最好找出问题的原因。