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
Susan Sarandonoriginal
2024-10-22 20:47:12360parcourir

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>

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>

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!

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