Maison >interface Web >js tutoriel >Pourquoi ma fonction setTimeout s'exécute-t-elle immédiatement ?

Pourquoi ma fonction setTimeout s'exécute-t-elle immédiatement ?

DDD
DDDoriginal
2024-11-11 17:31:03753parcourir

Why Does My setTimeout Function Execute Immediately?

Exécution immédiate inattendue d'une fonction avec setTimeout

En tentant de planifier un appel de fonction à des intervalles spécifiques, l'utilisateur rencontre un problème où le setTimeout La fonction exécute la fonction immédiatement, malgré le délai d'attente spécifié. La fonction doRequest doit être appelée à intervalles de 10 secondes, mais elle est appelée immédiatement.

La cause de cette exécution immédiate réside dans la manière dont la fonction setTimeout est appelée. L'extrait de code suivant illustre le problème :

setTimeout(doRequest(url, proxys[proxy]), proxytimeout);

Dans ce code, la fonction doRequest est transmise comme premier argument à setTimeout, mais la fonction est exécutée immédiatement plutôt que planifiée.

Solutions :

Pour résoudre ce problème et garantir que doRequest est planifié, il existe trois façons alternatives d'utiliser setTimeout :

  1. Transmettez le nom de la fonction sous forme de chaîne :

    setTimeout('doRequest(' + url + ',' + proxys[proxy] + ')', proxytimeout);
  2. Utilisez un nom anonyme Fonction :

    (function(u, p, t) {
        setTimeout(function() { doRequest(u, p); }, t);
    })(url, proxys[proxy], proxytimeout);
  3. Transmettez d'abord le nom de la fonction, puis les paramètres :

    setTimeout(doRequest, proxytimeout, url, proxys[proxy]);

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