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!