183 votes

Appeler une fonction Javascript toutes les 5 secondes en continu

Duplicata possible : Appeler une fonction toutes les 60 secondes

Je veux appeler une fonction Javascript toutes les 5 secondes en continu. J'ai vu l'événement setTimeOut. Cela fonctionnera-t-il bien si je le veux en continu?

299voto

Anantha Sharma Points 4217

Vous pouvez utiliser setInterval() , les arguments sont les mêmes.

 const interval = setInterval(function() {
   // method to be executed;
 }, 5000);

clearInterval(interval); // thanks @Luca D'Amico

136voto

Shef Points 21595

setTimeout « récursif » de votre fonction, et elle continuera à être exécutée à chaque laps de temps défini :

 function yourFunction(){
    // do whatever you like here

    setTimeout(yourFunction, 5000);
}

yourFunction();

54voto

Jose Faeti Points 6997

Comme le suggèrent les meilleures pratiques de codage setTimeout au lieu de setInterval .

 function foo() {

    // your function code here

    setTimeout(foo, 5000);
}

foo();

Veuillez noter qu'il ne s'agit PAS d'une fonction récursive. La fonction ne s'appelle pas avant de se terminer, elle appelle une fonction setTimeout qui appellera à nouveau la même fonction plus tard.

26voto

gion_13 Points 15594

Pour répéter une action à l'avenir, il existe la fonction intégrée setInterval que vous pouvez utiliser à la place de setTimeout . Il a une signature similaire, donc le passage de l'un à l'autre est simple :

 setInterval(function() {
    // do stuff
}, duration);

6voto

Iladarsda Points 1812

Bon exemple de travail ici : http://jsfiddle.net/MrTest/t4NXD/62/

Plus:

  • a une belle animation fade in / fade out
  • fera une pause sur :hover
  • empêchera l'exécution de plusieurs actions (terminez l'animation d'exécution avant de commencer la seconde)
  • empêchera d'être cassé dans l'onglet (le navigateur arrête les scripts dans les onglets)

Testé et fonctionnel !

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