„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > How Can I Control Timeout Execution and Determine Remaining Time in JavaScript?

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

Veröffentlicht am 08.11.2024
Durchsuche:841

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

Pausing and Resuming Timeouts in JavaScript

When working with JavaScript, it can be necessary to control the flow of asynchronous operations such as timeouts. Here, we explore ways to pause and resume active timeouts, as well as retrieve the remaining time on the current timeout.

Pausing and Resuming Timeouts

To pause a timeout, you can utilize a wrapper function that intercepts the window.setTimeout call and provides the necessary functionality. The wrapper function, Timer, takes a callback function and a delay as arguments and handles the pausing, resuming, and tracking of the remaining time.

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();
};

To use this wrapper, instantiate a Timer object and call its pause() and resume() methods as needed.

Retrieving Remaining Time

To obtain the remaining time on the current timeout, one way is to store the start time when the timeout is set and calculate the difference between the current time and the start time when pausing.

var start = Date.now();
var t = setTimeout("dosomething()", 5000);
var remaining = (start + 5000) - Date.now();

However, it's important to note that if the timeout has been paused and resumed, this calculation may not be accurate. In the Timer wrapper function provided earlier, the remaining time is tracked and updated accordingly, providing a more reliable method for retrieving the remaining time.

Freigabeerklärung Dieser Artikel wird unter folgender Adresse abgedruckt: 1729595660 Bei Verstößen wenden Sie sich bitte an [email protected], um ihn zu löschen
Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3