Javascript setTimeout 函数开始执行太多次

Jan*_*var 4 javascript settimeout intervals

我用 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
}
Run Code Online (Sandbox Code Playgroud)

如果我将变量值控制为 69、68,然后在一次函数调用中开始两次减少变量值。我不是在任何地方而是从一个地方调用函数 countDown()。

Javascript 间隔 可能是什么问题呢?

编辑:此代码现在有效。

小智 5

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

function interval() {
  clearTimeout(intervalID);
  intervalID = setTimeout(countDown, 1000);
}
Run Code Online (Sandbox Code Playgroud)

然而,它看起来像是控制症状而不是疾病的原因。所以最好能检测出问题的原因。

  • 我发现我在 html 中有 2 个具有相同类的 dom 元素,所以这就是为什么一切都开始执行两次。 (2认同)