4

我用 setTimeout 函数创建了一个循环,它在第 2 步或第 3 步后出现问题,它自己调用,因为它同时开始执行两次。这就是我的函数的样子:

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 间隔 可能是什么问题呢?

编辑:此代码现在有效。

4

1 回答 1

5

我建议您通过停止前一个超时来“清理”超时。

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

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

于 2012-08-29T11:17:25.593 回答