Heim >Web-Frontend >js-Tutorial >Wie kann man Timeouts in JavaScript effizient anhalten und fortsetzen?

Wie kann man Timeouts in JavaScript effizient anhalten und fortsetzen?

Barbara Streisand
Barbara StreisandOriginal
2024-10-23 00:18:031016Durchsuche

How to Pause and Resume Timeouts in JavaScript Efficiently?

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn