Maison >interface Web >js tutoriel >Pourquoi ma fonction « setTimeout » s'exécute-t-elle immédiatement au lieu d'après le délai ?
Problème de délai d'invocation de la fonction setTimeout
Lors de la tentative d'implémentation d'un mécanisme d'interrogation de 5 secondes pour une mise à jour d'une valeur HTML, les utilisateurs peuvent rencontrer un comportement inattendu où la fonction setTimeout() est appelée immédiatement plutôt qu'après le délai prévu. Cela peut empêcher les requêtes de serveur échelonnées souhaitées.
Cause :
Le problème provient de la manière incorrecte dont la fonction setTimeout() est invoquée.
Original Code :
setTimeout(GetUsersNumber(), 50000);
Explication :
En JavaScript, les fonctions peuvent être définies comme des objets sans parenthèses. Cependant, pour appeler une fonction, elle doit être suivie de parenthèses. Dans le code d'origine, la fonction GetUsersNumber() est appelée immédiatement à l'intérieur de setTimeout(), plutôt que d'être passée comme référence de fonction.
Solution :
Pour résolvez le problème, supprimez simplement les parenthèses après le nom de la fonction dans l'argument setTimeout() :
setTimeout(GetUsersNumber, 5000); // 5 seconds instead of 50
Cela garantit que setTimeout() capture une référence à l'objet fonction GetUsersNumber lui-même, lui permettant d'invoquer la fonction lorsque le délai est terminé.
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!