私があなたのために書いたこのコード (楽しい演習) は、 関数と 関数をオーバーライドしsetTimeout
、clearTimeout
というグローバル変数で使用可能なタイムアウトを追跡する関数を作成しますtimeouts
。jsfiddle で試してみてください: http://jsfiddle.net/KqZmb/
(function() {
window.timeouts = [];
var _setTimeout = window.setTimeout;
window.setTimeout = function() {
var id = _setTimeout.apply( this, arguments );
timeouts.push( id );
_setTimeout( function() {
timeouts.splice( timeouts.indexOf( id ), 1);
}, arguments[1] );
return id;
};
var _clearTimeout = window.clearTimeout;
window.clearTimeout = function( id ) {
_clearTimeout( id );
timeouts.splice( timeouts.indexOf( id ), 1);
};
})();
setInterval
とに簡単に適応させることができますclearInterval
。
私が言いたいのは、アプリケーションでの奇妙な動作を避けるために、おそらくタイムアウトを追跡する必要があるということです...