Maison > Article > interface Web > Pourquoi ma fonction « setTimeout » est-elle exécutée immédiatement plutôt qu'après le délai ?
Dans ce scénario, où une fonction est destinée à être exécutée avec un délai à l'aide de setTimeout mais est à la place exécutée immédiatement, le problème réside dans la façon dont la fonction est transmise à setTimeout.
Pour résoudre ce problème, il existe trois approches pour garantir qu'elle s'exécute avec le délai souhaité :
Transmettre les arguments individuellement :
setTimeout(doRequest, proxytimeout, url, proxys[proxy]);
Ce formulaire transmet d'abord la fonction, suivi du délai d'attente et des arguments de la fonction.
Utilisez un Chaîne littérale :
setTimeout('doRequest('+url+','+proxys[proxy]+')', proxytimeout);
Ici, une chaîne littérale est fournie, qui sera évaluée au moment de l'exécution.
Fermeture de fonction anonyme :
(function(u, p, t) { setTimeout(function() { doRequest(u, p); }, t); })(url, proxys[proxy], proxytimeout);
Cette approche implique une fonction anonyme qui appelle la fonction prévue. La fermeture garantit que les valeurs utilisées dans la fonction restent cohérentes tout au long de la boucle.
En adoptant l'une de ces méthodes, vous pouvez planifier efficacement l'exécution de la fonction doRequest avec le délai spécifié.
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!