"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > How Can I Control Timeout Execution and Determine Remaining Time in JavaScript?

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

Publicado el 2024-11-08
Navegar:471

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.

Declaración de liberación Este artículo se reimprime en: 1729595660 Si hay alguna infracción, comuníquese con [email protected] para eliminarla.
Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3