JavaScript-Timeouts anhalten und fortsetzen
Beim Arbeiten mit setTimeouts in JavaScript kann die Möglichkeit, sie anzuhalten und fortzusetzen, in verschiedenen Szenarien nützlich sein. Es kann vorkommen, dass eine Verzögerung konfiguriert wurde, aber vor der Ausführung eine Pause erforderlich ist oder auf den Abschluss eines asynchronen Vorgangs gewartet werden muss.
Timeouts mit einem benutzerdefinierten Wrapper anhalten und fortsetzen
Anstatt die aktuelle Zeit zu speichern und die verbleibende Dauer zu berechnen, ist es möglich, einen benutzerdefinierten Wrapper um window.setTimeout zu erstellen, der Pausen- und Fortsetzungsfunktionen bietet. Dieser Ansatz bietet eine elegantere und wiederverwendbarere Lösung:
var Timer = function(callback, delay) { var timerId, start, remaining = delay; this.pause = function() { window.clearTimeout(timerId); timerId = null; remaining -= Date.now() - start; }; this.resume = function() { if (timerId) { return; } start = Date.now(); timerId = window.setTimeout(callback, remaining); }; this.resume(); };
Mit dieser benutzerdefinierten Timer-Klasse können Sie Zeitüberschreitungen nach Bedarf anhalten und fortsetzen. Um es zu verwenden, initialisieren Sie es mit der Rückruffunktion und der Verzögerung und rufen Sie dann nach Bedarf die Methoden pause() oder resume() auf.
Beispiel:
var timer = new Timer(function() { alert("Done!"); }, 1000); timer.pause(); // Perform asynchronous operations or other tasks timer.resume();
Hinweis: Dieser benutzerdefinierte Wrapper bietet keine Möglichkeit, die verbleibende Zeit des angehaltenen Timers abzurufen. Alternativ könnte man einen umfassenderen Wrapper implementieren, der die verbleibende Zeit verfolgt und eine getTimeRemaining()-Methode bereitstellt.
Das obige ist der detaillierte Inhalt vonWie kann man Timeouts in JavaScript effizient anhalten und fortsetzen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!