"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 > ¿Cómo puedo controlar la ejecución del tiempo de espera y determinar el tiempo restante en JavaScript?

¿Cómo puedo controlar la ejecución del tiempo de espera y determinar el tiempo restante en JavaScript?

Publicado el 2024-11-09
Navegar:169

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

Pausar y reanudar tiempos de espera en JavaScript

Al trabajar con JavaScript, puede ser necesario controlar el flujo de operaciones asincrónicas, como los tiempos de espera. Aquí, exploramos formas de pausar y reanudar tiempos de espera activos, así como recuperar el tiempo restante en el tiempo de espera actual.

Pausar y reanudar tiempos de espera

Para pausar un tiempo de espera, puede utilizar un contenedor función que intercepta la llamada window.setTimeout y proporciona la funcionalidad necesaria. La función contenedora, Temporizador, toma una función de devolución de llamada y un retraso como argumentos y maneja la pausa, la reanudación y el seguimiento del tiempo restante.

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

Para usar este contenedor, cree una instancia de un objeto Timer y llame a sus métodos pausa() y reanudar() según sea necesario.

Recuperar el tiempo restante

Para obtener el tiempo restante hora en el tiempo de espera actual, una forma es almacenar la hora de inicio cuando se establece el tiempo de espera y calcular la diferencia entre la hora actual y la hora de inicio cuando pausando.

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

Sin embargo, es importante tener en cuenta que si el tiempo de espera se ha pausado y reanudado, es posible que este cálculo no sea preciso. En la función contenedora de temporizador proporcionada anteriormente, se realiza un seguimiento del tiempo restante y se actualiza en consecuencia, lo que proporciona un método más confiable para recuperar el tiempo restante.

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