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?
- Jquery fonction de répétition de toutes les 60 secondes (5 réponses )
Réponses
Trop de publicités?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
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.
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);
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 !