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.
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.
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.
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