如何在javaScript中打破递归的setTimeouts

时间:2017-07-01 19:55:55

标签: javascript recursion

我无法摆脱递归的setTimeout()而我不知道我做错了什么。

timer.start = function() {
  //do something here
  recursive(); //call the recursive once to start it up
  function recursive() {
    setTimeout1 = setTimeout {
      function() {
        //do something
        recursive();//call recursive after a delay
      }, delay}
  }
}

一旦"暂停"我怎么能阻止它按钮已被击中?

我试过这个:

clearTimeout(setTimeout1);
<br />
setTimeout1 = null;

这不会一直有效。

1 个答案:

答案 0 :(得分:2)

如何为所有超时维护单个数组?

var setTimeouts = [];

timer.start = function() {
  recursive();
  function recursive() {
      setTimeouts.push( setTimeout ( function() { recursive(); }, 1000 ) );
  }
}

如果要停止计时器,请调用此功能。

function clearTimeouts() {
    for (var i = 0; i < setTimeouts.length; i++) {
        clearTimeout(setTimeouts[i]);
    }
}