"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Comment puis-je contrôler l’exécution du délai d’attente et déterminer le temps restant en JavaScript ?

Comment puis-je contrôler l’exécution du délai d’attente et déterminer le temps restant en JavaScript ?

Publié le 2024-11-09
Parcourir:264

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

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

Lorsque vous travaillez avec JavaScript, il peut être nécessaire de contrôler le flux des opérations asynchrones telles que les délais d'attente. Ici, nous explorons les moyens de suspendre et de reprendre les délais d'attente actifs, ainsi que de récupérer le temps restant sur le délai d'attente actuel.

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

Pour suspendre un délai d'attente, vous pouvez utiliser un wrapper fonction qui intercepte l’appel window.setTimeout et fournit les fonctionnalités nécessaires. La fonction wrapper, Timer, prend une fonction de rappel et un délai comme arguments et gère la pause, la reprise et le suivi du temps restant.

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

Pour utiliser ce wrapper, instanciez un objet Timer et appelez ses méthodes pause() et curriculum vitae() si nécessaire.

Récupération du temps restant

Pour obtenir le temps restant heure sur le délai d'expiration actuel, une solution consiste à stocker l'heure de début lorsque le délai d'attente est défini et à calculer la différence entre l'heure actuelle et l'heure de début lors de la pause.

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

Cependant, il est important de noter que si le délai d'attente a été suspendu puis repris, ce calcul peut ne pas être précis. Dans la fonction Timer wrapper fournie précédemment, le temps restant est suivi et mis à jour en conséquence, fournissant une méthode plus fiable pour récupérer le temps restant.

Déclaration de sortie Cet article est réimprimé à l'adresse : 1729595660. En cas d'infraction, veuillez contacter [email protected] pour le supprimer.
Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3