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
Libérer: 2024-10-23 00:18:03
original
1020 Les gens l'ont consulté

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();
};
Copier après la connexion

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();
Copier après la connexion

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!

source:php
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal