Maison >interface Web >js tutoriel >Comment suspendre et reprendre efficacement les délais d'attente en JavaScript ?

Comment suspendre et reprendre efficacement les délais d'attente en JavaScript ?

Barbara Streisand
Barbara Streisandoriginal
2024-10-23 00:18:031016parcourir

How to Pause and Resume Timeouts in JavaScript Efficiently?

Mise en pause et reprise des délais d'attente JavaScript

Lorsque vous travaillez avec setTimeouts en JavaScript, la possibilité de les suspendre et de les reprendre peut être utile dans divers scénarios. On peut rencontrer une situation dans laquelle un délai a été configuré, mais une pause est nécessaire avant l'exécution ou pour attendre la fin d'une opération asynchrone.

Mise en pause et reprise des délais d'attente avec un wrapper personnalisé

Au lieu de stocker l'heure actuelle et de calculer la durée restante, il est possible de créer un wrapper personnalisé autour de window.setTimeout qui fournit des fonctionnalités de pause et de reprise. Cette approche offre une solution plus élégante et réutilisable :

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

Cette classe Timer personnalisée vous permet de suspendre et de reprendre les délais d'attente selon vos besoins. Pour l'utiliser, initialisez-le avec la fonction de rappel et le délai, puis appelez les méthodes pause() ou curriculum vitae() selon les besoins.

Exemple :

var timer = new Timer(function() {
    alert("Done!");
}, 1000);

timer.pause();
// Perform asynchronous operations or other tasks
timer.resume();

Remarque : Ce wrapper personnalisé ne permet pas de récupérer le temps restant sur la minuterie en pause. Alternativement, on pourrait implémenter un wrapper plus complet qui suit le temps restant et fournit une méthode getTimeRemaining().

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn