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
Freigeben: 2024-10-23 00:18:03
Original
1021 Leute haben es durchsucht

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();
};
Nach dem Login kopieren

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();
Nach dem Login kopieren

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!

Quelle:php
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage