是否可以删除间隔的所有实例?
代码段:
function callInterval() {
theInterval = setInterval(function() {
console.log("Interval called");
}, 1000);
}
callInterval();
setTimeout(callInterval, 4000);
setTimeout(clearThem, 8000);
function clearThem() {
clearInterval(theInterval);
}
上面的代码段只删除一个间隔,另一个继续。
答案 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>