如何判断setInterval 是否正在执行?
var foo = window.setInterval(function(){
......
});
if (foo) {
window.clearInterval(foo);
}
@manji setInterval
和 setTimeout
返回的都是 Number
,都是相应的 ID。
不过楼主需要的是判断 setInterval
是否在执行……
其实这个比较好的办法还是在执行函数里加一些处理 ,比如加一个计数器之类的,通过这个变量的变化了能了解它是否还在执行。比如
(function(ifun) {
ifun.exeCount = 0
setInterval(function() {
ifun()
ifun.exeCount++
}, 1000)
})(intervalFunction)
经测试,var timer=window.setInterval(...),console.log(timer)是1,typeof timer的结果是number,我估计它是计时器的id,于是我做了个实验:
var i = 0;
var k = window.setInterval(function(){
i++;
console.log(i);
if(i>10){
window.clearInterval(1); // 注意这里,不是k是1
// window.clearInterval(k); // 跟上一句效果一样
}
},10);
上面的代码只输出到11,说明这真是个计时器的id,我试图在window对象里面找到那个能获取装这些id的容器的方法,但没找到。