Maison > interface Web > js tutoriel > 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 ?

Susan Sarandon
Libérer: 2024-10-22 20:47:12
original
366 Les gens l'ont consulté

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.

<code class="javascript">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();
};</code>
Copier après la connexion

Pour utiliser ce wrapper, instanciez un objet Timer et appelez son méthodes pause() et curriculum vitae() selon les besoins.

Récupération du temps restant

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

<code class="javascript">var start = Date.now();
var t = setTimeout("dosomething()", 5000);
var remaining = (start + 5000) - Date.now();</code>
Copier après la connexion

Cependant, il est important de noter que si le délai d'attente a été mis en pause et 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, offrant une méthode plus fiable pour récupérer le temps restant.

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