"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como posso controlar a execução do tempo limite e determinar o tempo restante em JavaScript?

Como posso controlar a execução do tempo limite e determinar o tempo restante em JavaScript?

Publicado em 2024-11-09
Navegar:774

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

Pausando e retomando tempos limite em JavaScript

Ao trabalhar com JavaScript, pode ser necessário controlar o fluxo de operações assíncronas, como tempos limite. Aqui, exploramos maneiras de pausar e retomar os tempos limite ativos, bem como recuperar o tempo restante no tempo limite atual.

Pausando e retomando os tempos limite

Para pausar um tempo limite, você pode utilizar um wrapper função que intercepta a chamada window.setTimeout e fornece a funcionalidade necessária. A função wrapper, Timer, recebe uma função de retorno de chamada e um atraso como argumentos e lida com a pausa, a retomada e o rastreamento do tempo 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 esse wrapper, instancie um objeto Timer e chame seus métodos pause() e resume() conforme necessário.

Recuperando o tempo restante

Para obter o tempo restante tempo no tempo limite atual, uma maneira é armazenar a hora de início quando o tempo limite é definido e calcular a diferença entre a hora atual e a hora de início durante a pausa.

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

No entanto, é importante observar que se o tempo limite tiver sido pausado e retomado, esse cálculo pode não ser preciso. Na função wrapper Timer fornecida anteriormente, o tempo restante é rastreado e atualizado de acordo, fornecendo um método mais confiável para recuperar o tempo restante.

Declaração de lançamento Este artigo foi reimpresso em: 1729595660 Se houver alguma violação, entre em contato com [email protected] para excluí-lo
Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3