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.
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.
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.
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