Maison > interface Web > js tutoriel > Pourquoi mon rappel « setInterval » ne s'exécute-t-il qu'une seule fois ?

Pourquoi mon rappel « setInterval » ne s'exécute-t-il qu'une seule fois ?

Mary-Kate Olsen
Libérer: 2024-12-11 03:36:11
original
943 Les gens l'ont consulté

Why Does My `setInterval` Callback Only Run Once?

Exécution unique du rappel setInterval :

Considérez le code suivant qui vise à créer un compteur :

function timer() {
  console.log("timer!")
}

window.setInterval(timer(), 1000)
Copier après la connexion

Cependant , ce code n'exécute la fonction timer qu'une seule fois. Voyons pourquoi ce problème se produit et comment le résoudre.

Le problème survient car le premier paramètre de setInterval doit être une référence de fonction, pas un appel de fonction. Dans le code ci-dessus, timer() est appelé immédiatement, renvoyant undéfini. Par conséquent, setInterval est configuré pour appeler undefined à un intervalle de 1 000 millisecondes, ce qui conduit à une seule exécution au lieu d'une boucle continue.

Pour remédier à cela, nous devons passer une référence de fonction au lieu d'appeler la fonction. . Voici le code corrigé :

function timer() {
  console.log("timer!");
}

window.setInterval(timer, 1000);
Copier après la connexion

Dans cette version corrigée, timer est passé comme référence, permettant à setInterval de l'appeler à l'intervalle spécifié.

Alternativement, nous pouvons utiliser une fonction anonyme comme rappel :

window.setInterval( function() {
  console.log("timer!");
}, 1000)
Copier après la connexion

Cette approche est plus courte mais peut devenir moins lisible lorsque la fonction devient plus complexe.

En mettant en œuvre ces changements, la fonction de minuterie s'exécutera désormais à plusieurs reprises à l'intervalle souhaité, garantissant un compteur continu.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal