[英]How to clear all setInterval() and setTimeOut() without knowing their ID?
如果我不知道setInterval()
或setTimeOut()
的返回值,是否仍可以使用clearInterveral(id)
或clearTimeOut(id)
清除它們?
謝謝。
您可以將原始的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 );
等等..
您可以為此使用基於寄存器模式的對象。
據我所知,沒有原始ID是不可能的,因此將其存儲在數組中可能是個好主意
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.