Heim >Web-Frontend >js-Tutorial >Wie kann ich die Timeout-Ausführung steuern und die verbleibende Zeit in JavaScript ermitteln?

Wie kann ich die Timeout-Ausführung steuern und die verbleibende Zeit in JavaScript ermitteln?

Susan Sarandon
Susan SarandonOriginal
2024-10-22 20:47:12360Durchsuche

How Can I Control Timeout Execution and Determine Remaining Time in JavaScript?

Timeouts in JavaScript anhalten und fortsetzen

Beim Arbeiten mit JavaScript kann es notwendig sein, den Ablauf asynchroner Vorgänge wie Timeouts zu steuern. Hier untersuchen wir Möglichkeiten, aktive Zeitüberschreitungen anzuhalten und fortzusetzen sowie die verbleibende Zeit der aktuellen Zeitüberschreitung abzurufen.

Zeitüberschreitungen anhalten und fortsetzen

Um eine Zeitüberschreitung anzuhalten, können Sie einen Wrapper verwenden Funktion, die den window.setTimeout-Aufruf abfängt und die erforderliche Funktionalität bereitstellt. Die Wrapper-Funktion Timer verwendet eine Rückruffunktion und eine Verzögerung als Argumente und übernimmt das Anhalten, Fortsetzen und Verfolgen der verbleibenden Zeit.

<code class="javascript">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();
};</code>

Um diesen Wrapper zu verwenden, instanziieren Sie ein Timer-Objekt und rufen es auf pause()- und resume()-Methoden nach Bedarf.

Verbleibende Zeit abrufen

Um die verbleibende Zeit für das aktuelle Timeout zu erhalten, besteht eine Möglichkeit darin, die Startzeit zu speichern, wenn das Timeout festgelegt ist, und Berechnen Sie beim Pausieren die Differenz zwischen der aktuellen Zeit und der Startzeit.

<code class="javascript">var start = Date.now();
var t = setTimeout("dosomething()", 5000);
var remaining = (start + 5000) - Date.now();</code>

Es ist jedoch wichtig zu beachten, dass diese Berechnung möglicherweise nicht korrekt ist, wenn das Timeout pausiert und fortgesetzt wurde. In der zuvor bereitgestellten Timer-Wrapper-Funktion wird die verbleibende Zeit verfolgt und entsprechend aktualisiert, was eine zuverlässigere Methode zum Abrufen der verbleibenden Zeit bietet.

Das obige ist der detaillierte Inhalt vonWie kann ich die Timeout-Ausführung steuern und die verbleibende Zeit in JavaScript ermitteln?. 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