Veuillez noter que setInterval() n'est souvent pas la meilleure solution pour une exécution périodique - Il vraiment dépend du javascript que vous appelez périodiquement.
ex. Si vous utilisez setInterval() avec une période de 1000ms et que dans la fonction périodique vous faites un appel ajax qui prend parfois 2 secondes pour revenir, vous ferez un autre appel ajax avant que la première réponse ne revienne. Cela n'est généralement pas souhaitable.
De nombreuses bibliothèques ont des méthodes périodiques qui protègent contre les pièges de l'utilisation naïve de setInterval, comme l'exemple Prototype donné par Nelson.
Pour obtenir une exécution périodique plus robuste avec une fonction contenant un appel jQuery ajax, envisagez quelque chose comme ceci :
function myPeriodicMethod() {
$.ajax({
url: ...,
success: function(data) {
...
},
complete: function() {
// schedule the next request *only* when the current one is complete:
setTimeout(myPeriodicMethod, 1000);
}
});
}
// schedule the first invocation:
setTimeout(myPeriodicMethod, 1000);
Une autre approche consiste à utiliser setTimeout mais à suivre le temps écoulé dans une variable, puis à définir dynamiquement le délai d'attente à chaque invocation afin d'exécuter une fonction aussi près que possible de l'intervalle souhaité, mais jamais plus vite que les réponses que vous pouvez obtenir en retour.