我正在编写一个应用程序,它利用JavaScript超时和时间间隔来更新页面。有没有办法查看设置了多少个间隔?我希望确保我不会因为设置了数百个时间间隔而意外终止浏览器。
这是一个问题吗?
发布于 2009-05-13 15:27:48
我不认为有一种方法可以枚举活动计时器,但您可以覆盖window.setTimeout
和window.clearTimeout
,并将其替换为您自己的实现,这些实现进行一些跟踪,然后调用原始实现。
window.originalSetTimeout = window.setTimeout;
window.originalClearTimeout = window.clearTimeout;
window.activeTimers = 0;
window.setTimeout = function(func, delay) {
window.activeTimers++;
return window.originalSetTimeout(func, delay);
};
window.clearTimeout = function(timerID) {
window.activeTimers--;
window.originalClearTimeout(timerID);
};
当然,您可能不会总是调用clearTimeout
,但这至少会给您提供一些方法来跟踪运行时发生的事情。
发布于 2011-09-20 23:38:29
由于Paul只介绍了setTimeout,我想我应该共享setInterval/clearInterval的计数器。
window.originalSetInterval = window.setInterval;
window.originalClearInterval = window.clearInterval;
window.activeIntervals = 0;
window.setInterval = function (func, delay)
{
if(func && delay){
window.activeIntervals++;
}
return window.originalSetInterval(func,delay);
};
window.clearInterval = function (intervalId)
{
// JQuery sometimes hands in true which doesn't count
if(intervalId !== true){
window.activeIntervals--;
}
return window.originalClearInterval(intervalId);
};
发布于 2017-05-11 23:25:37
我们刚刚published了一个包来解决这个问题。
npm install time-events-manager
这样,您就可以通过timeoutCollection
对象(以及通过intervalCollection
对象查看和管理javascript的时间间隔)来查看和管理它们。
timeoutCollection.getScheduled(); timeoutCollection.getCompleted(); timeoutCollection.getAll();
https://stackoverflow.com/questions/858619
复制相似问题