清除间隔的所有实例

时间:2015-07-23 13:27:21

标签: jquery intervals

是否可以删除间隔的所有实例?

代码段:

function callInterval() {
    theInterval = setInterval(function() {
        console.log("Interval called");
    }, 1000);
}

callInterval();
setTimeout(callInterval, 4000);

setTimeout(clearThem, 8000);

function clearThem() {
    clearInterval(theInterval);
}

上面的代码段只删除一个间隔,另一个继续。

1 个答案:

答案 0 :(得分:2)

这里的问题是,每次调用theInterval时,您都会覆盖变量callInterval的值,因此它只会保留最后一个引用。

这里一个简单的解决方案是使用数组来保存所有引用,然后在调用clear

时删除它们

var theInterval = [];

function callInterval(test) {
  theInterval.push(setInterval(function() {
    snippet.log("Interval called: " + test);
  }, 1000));
}

callInterval(1);
setTimeout(callInterval.bind(undefined, 2), 4000);

setTimeout(clearThem, 8000);

function clearThem() {
  theInterval.forEach(clearInterval);
  clearInterval.length = 0; //hack to clear the array
}
<!-- Provides the `snippet` object, see http://meta.stackexchange.com/a/242144/134069 -->
<script src="http://tjcrowder.github.io/simple-snippets-console/snippet.js"></script>