Ich glaube nicht , gibt es eine Möglichkeit , aktiv Timer aufzuzählen, aber man konnte außer Kraft setzen window.setTimeout
und window.clearTimeout
und ersetzen sie durch eigene Implementierungen , die eine gewisse Tracking tun und dann die Originale nennen.
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);
};
Natürlich rufen Sie möglicherweise nicht immer an clearTimeout
, aber dies gibt Ihnen zumindest die Möglichkeit, zu verfolgen, was zur Laufzeit passiert.
activeTimers
dekrementieren, wennclearTimeout
es nicht aufgerufen wurde.window.setTimeout
Dies kann leicht erreicht werden, indem die zweite Zeile durch folgende ersetzt wird :return window.originalSetTimeout(function() {func(); activeTimers--;},delay);
Ich habe eine Chrome DevTools-Erweiterung erstellt, die alle Intervalle anzeigt. Gelöschte sind ausgegraut.
setInterval-Sniffer
quelle
Da Paul nur setTimeout behandelt hat, dachte ich, ich würde einen Zähler für setInterval / clearInterval teilen.
quelle
Anstatt nur eine Anzahl von Timern zu haben, ist hier eine Implementierung, die alle Timerids in einem Array speichert. Es werden nur aktive Timer angezeigt, während die akzeptierte Antwort nur Anrufe an
setTimeout
& zähltclearTimeout
.So können Sie die Anzahl der aktiven Timer auf der Seite ermitteln:
So können Sie alle aktiven Timer entfernen :
Bekannte Einschränkungen:
setTimeout
Mit diesem Affen-Patch können Sie nur eine Funktion (keine Zeichenfolge) übergeben .clearInterval
undclearTimeout
tut dasselbe, was sie tut, aber es könnte sich in Zukunft ändern.quelle
SetIntervals
? Zum Beispielvar timer = setInterval(function () { }
brauche ich einen Timer anstelle der Anzahl der laufenden Intervalle.Wir haben gerade veröffentlicht ein Paket Lösung genau dieses Problems.
Damit können Sie sie über anzeigen und verwalten
timeoutCollection
Objekt (und die Intervalle von Javascript über einintervalCollection
Objekt).timeoutCollection.getScheduled(); timeoutCollection.getCompleted(); timeoutCollection.getAll();
quelle
Ich brauchte nur so etwas und das habe ich zusammengestellt:
Dies zeichnet die Intervalle
id
s zusammen mit ihren Funktionen auf und verfolgt auch ihren Status (active
/inactive
).quelle