有没有办法查看使用setTimeout或setInterval创建的当前正在运行的超时和/或间隔?
由于每个人都返回一个ID,有没有办法在开发者控制台中查看当前的ID?这可以帮助我在我的应用程序中找到“泄漏”。
现在我能想到的唯一方法是为我的setInterval / setTimeout调用创建一个包装器。或者在窗口中覆盖内置的(即window.setTimeout=function()
),然后让对象图跟踪。
答案 0 :(得分:1)
基于this answer,
for (var i = 1; i < 99999; i++){
window.clearInterval(i);
window.clearTimeout(i);
}
希望这有帮助!
答案 1 :(得分:1)
我刚刚为您编写的这段代码(有趣的练习)会覆盖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
进行调整。
我想说的是你可能需要跟踪你的超时,以避免应用程序中的奇怪行为......