93 votes

Pourquoi la méthode est-elle exécutée immédiatement lorsque j'utilise setTimeout ?

J'essaie d'écrire un code simple avec un setTimeout , mais le setTimeout n'attendra tout simplement pas le temps qu'il suppose et le code s'exécutera immédiatement. Qu'est-ce que je fais mal?

 setTimeout(testfunction(), 2000);

160voto

Mat Points 104488

Vous appelez la fonction immédiatement et planifiez sa valeur de retour.

Utilisation:

 setTimeout(testFunction, 2000);
                       ^

Remarque : pas de parenthèses.

9voto

Emil Vikström Points 42251

Supprimez la parenthèse après le nom de la fonction test :

 setTimeout(testfunction, 2000);

La raison en est que le premier argument de setTimeout doit être une référence de fonction et non la valeur de retour de la fonction. Dans votre code, testfunction est appelé immédiatement et la valeur de retour est envoyée à setTimeout.

3voto

Shraddha Points 21

Supprimez d'abord la parenthèse :

 setTimeout(testfunction, 2000);

Et puis, si vous voulez passer des paramètres dans la fonction setTimeout , vous pouvez passer de cette manière :

  setTimeout(testfunction, 2000, param1, param2);

Remarque : Vous pouvez transmettre plusieurs paramètres en fonction des besoins de votre fonction.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X