Existe-t-il un moyen d'appeler périodiquement une fonction en JavaScript?
javascript
javascript-events
coderex
la source
la source
setInterval()
est la bonne réponse à la question, quel que soit le paramètre. Ce n'est qu'un exemple, et les deux méthodes sont par définition correctes.Veuillez noter que setInterval () n'est souvent pas la meilleure solution pour une exécution périodique - Cela dépend vraiment du javascript que vous appelez régulièrement.
par exemple. Si vous utilisez setInterval () avec une période de 1000 ms et que dans la fonction périodique vous effectuez un appel ajax qui prend parfois 2 secondes pour revenir, vous effectuerez un autre appel ajax avant que la première réponse ne revienne. Ceci 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 qui contient un appel jQuery ajax, considérez quelque chose comme ceci:
Une autre approche consiste à utiliser setTimeout mais à suivre le temps écoulé dans une variable, puis à définir le délai d'expiration à chaque appel de manière dynamique pour exécuter une fonction aussi près que possible de l'intervalle souhaité, mais jamais plus rapidement que vous ne pouvez obtenir des réponses.
la source
Tout le monde a déjà une solution setTimeout / setInterval. Je pense qu'il est important de noter que vous pouvez passer des fonctions à setInterval, pas seulement des chaînes. Il est en fait probablement un peu "plus sûr" de passer des fonctions réelles au lieu de chaînes qui seront "évaluées" à ces fonctions.
Ou:
la source
Ancienne question mais .. J'avais aussi besoin d'un lanceur de tâches périodique et j'ai écrit TaskTimer . Ceci est également utile lorsque vous devez exécuter plusieurs tâches à des intervalles différents.
TaskTimer
fonctionne à la fois dans le navigateur et Node. Voir la documentation pour toutes les fonctionnalités.la source
Vous voudrez jeter un oeil à setInterval () et setTimeout ().
Voici un article de tutoriel décent .
la source
oui - jetez un œil à
setInterval
etsetTimeout
pour exécuter du code à certains moments. setInterval serait celui à utiliser pour exécuter du code périodiquement.Voir une démo et répondre ici pour l'utilisation
la source
la source
Puisque vous voulez que la fonction soit exécutée périodiquement , utilisez setInterval
la source
La manière native est en effet
setInterval()
/clearInterval()
, mais si vous utilisez déjà la bibliothèque Prototype , vous pouvez profiter de PeriodicalExecutor:Cela empêche les appels qui se chevauchent. De http://www.prototypejs.org/api/periodicalExecuter :
la source