Heim > Web-Frontend > js-Tutorial > Hauptteil

Warum wird meine Funktion „setTimeout' sofort und nicht zu einem geplanten Zeitpunkt ausgeführt?

Susan Sarandon
Freigeben: 2024-11-12 13:40:01
Original
766 Leute haben es durchsucht

Why Is My `setTimeout` Function Executing Immediately Instead of at a Scheduled Time?

Warum wird meine von setTimeout geplante Funktion nicht sofort ausgeführt?

Ihr Code versucht, Proxyserver mithilfe der setTimeout-Funktion zum Aufrufen von doRequest zu testen im 10-Sekunden-Takt. Seltsamerweise werden die Funktionen sofort ausgeführt, anstatt dem vorgesehenen Zeitplan zu folgen.

Verstehen des Problems

Das Problem liegt darin, wie Sie die doRequest-Funktion an setTimeout übergeben. Wenn Sie eine Funktion als erstes Argument angeben, wie in setTimeout(doRequest(url, Proxys[Proxy]), Proxytimeout), wird die Funktion sofort aufgerufen.

Lösungen

Um das Problem zu lösen, haben Sie drei Möglichkeiten:

  1. Übergeben Sie die Argumente als separate Parameter:

    setTimeout(doRequest, proxytimeout, url, proxys[proxy]);
    Nach dem Login kopieren
  2. Verwenden Sie einen Zeichenfolgenausdruck:

    setTimeout('doRequest(' + url + ',' + proxys[proxy] + ')', proxytimeout);
    Nach dem Login kopieren
  3. Definieren Sie eine anonyme Funktion innerhalb von a Abschluss:

    (function(u, p, t) {
       setTimeout(function() { doRequest(u, p); }, t);
    })(url, proxys[proxy], proxytimeout);
    Nach dem Login kopieren

Die erste Option wird bevorzugt, da sie klarer und expliziter ist. Die zweite Option ist aufgrund ihrer „hackigen“ Natur weniger wünschenswert, während die dritte Option komplex zu verstehen sein kann, aber verhindert, dass sich Werte innerhalb der Schleife ändern.

Das obige ist der detaillierte Inhalt vonWarum wird meine Funktion „setTimeout' sofort und nicht zu einem geplanten Zeitpunkt ausgeführt?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage