web-dev-qa-db-fra.com

Appeler une fonction Javascript toutes les 5 secondes en continu

Duplicate possible:
Appel d’une fonction toutes les 60 secondes

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

90
deepmoteria

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

> var interval = setInterval(function() {
>       // method to be executed;
>     }, 5000);
> 
> // after some time
> 
> clearInterval(interval); // thanks @Luca D'Amico
162
Anantha Sharma

Faites un "récursif" setTimeout de votre fonction, et elle continuera à être exécutée toutes les durées définies:

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

    setTimeout(yourFunction, 5000);
}

yourFunction();
75
Shef

Comme meilleures pratiques de codage le suggère, utilisez setTimeout au lieu de setInterval.

function foo() {

    // your function code here

    setTimeout(foo, 5000);
}

foo();

S'il vous plaît noter que ce n'est pas une fonction récursive. La fonction ne s'appelle pas avant la fin, elle appelle une fonction setTimeout qui sera appelée plus tard par la même fonction.

23
Jose Faeti

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

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

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

Plus:

  • a Nice fade in / fade out animation
  • fera une pause sur :hover
  • empêchera l'exécution de plusieurs actions (terminer l'animation avant de commencer en deuxième)
  • empêchera d'aller cassé quand dans l'onglet (le navigateur arrête les scripts dans les onglets)

Testé et fonctionnel!

5
Iladarsda