Maison > interface Web > js tutoriel > le corps du texte

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

DDD
Libérer: 2024-11-11 17:31:03
original
687 Les gens l'ont consulté

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);
Copier après la connexion

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);
    Copier après la connexion
  2. Utilisez un nom anonyme Fonction :

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

    setTimeout(doRequest, proxytimeout, url, proxys[proxy]);
    Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal