236 votes

Annuler/supprimer window.setTimeout() avant qu'il ne se produise

À quelques endroits, j'utilise la ligne ci-dessous pour effacer un statut, par exemple. J'en ai quelques-uns qui traînent pendant 10 secondes ou plus et si l'utilisateur clique un peu partout, l'action peut se produire à des intervalles de temps incorrects.

window.setTimeout(function() { removeStatusIndicator(); }, statusTimeout);

Est-il possible d'annuler ou de tuer ce processus à l'aide d'un code jQuery ou JavaScript, de manière à ce que ce processus ne reste pas en suspens ?

447voto

Diodeus Points 67946
var timer1 = setTimeout(function() { removeStatusIndicator(); }, statusTimeout);

clearTimeout(timer1)

104 votes

Window est simplement le nom de l'espace de noms global, il n'est donc pas vraiment nécessaire (que ce soit pour setTimeout ou clearTimeout).

9 votes

Étant donné que le premier paramètre de setTimeout est une fonction et que "removeStatusIndicator()" est une fonction, vous pouvez gagner en performance (et taper moins) en utilisant simplement : var timer1 = setTimeout(removeStatusIndicator, statusTimeout) ; Cela permet d'éviter les appels de fonctions imbriquées.

7 votes

Y window.clearTimeout(timer1) ne fonctionnera pas dans Node.js. Il faut soit utiliser clearTimeout(timer1) o global.clearTimeout(timer1)

0voto

Florin Toader Points 187

En window.clearTimeout() devrait faire ce que vous essayez de faire.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X