如果我不知道setInterval()
或setTimeOut()
的返回值,我仍然可以使用clearInterveral(id)
或clearTimeOut(id)
来清除它们吗?
感谢。
答案 0 :(得分:4)
您可以将原来的setTimeout和setInterval替换为:
setInterval = (function( oldsetInterval){
var registered=[],
f = function(a,b){
return registered[ registered.length ] = oldsetInterval(a,b)
};
f.clearAll = function(){
var r;
while( r = registered.pop()) {
clearInterval( r );
}
};
return f;
})(window.setInterval);
现在:
setInterval( function(){alert(5000)}, 5000 );
setInterval( function(){alert(10000)}, 10000 );
setInterval.clearAll();
建议来自@PointedEars的评论你不应该使用相同的名字:
reportingSetInterval = as above;
reportingSetInterval( function(){alert(5000)}, 5000 );
依旧......
答案 1 :(得分:1)
您可以使用基于寄存器模式的对象。
答案 2 :(得分:1)
据我所知,如果没有原始id,这是不可能的,所以存储它,可能在数组中是个好主意