Maison >interface Web >js tutoriel >Pourquoi ma fonction « setTimeout » s'exécute-t-elle immédiatement au lieu d'après le délai ?

Pourquoi ma fonction « setTimeout » s'exécute-t-elle immédiatement au lieu d'après le délai ?

Barbara Streisand
Barbara Streisandoriginal
2024-12-13 05:43:18679parcourir

Why is my `setTimeout` Function Executing Immediately Instead of After the Delay?

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!

Déclaration:
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