Heim > Web-Frontend > js-Tutorial > Warum wird meine Funktion „setTimeout' sofort und nicht erst nach der Verzögerung ausgeführt?

Warum wird meine Funktion „setTimeout' sofort und nicht erst nach der Verzögerung ausgeführt?

Susan Sarandon
Freigeben: 2024-12-02 11:36:10
Original
585 Leute haben es durchsucht

Why Does My `setTimeout` Function Execute Immediately Instead of After the Delay?

Unerwartete sofortige Ausführung der Funktion „setTimeout“

Bei dem Versuch, die Serverlast zu minimieren, indem ein Webseitenwert in regelmäßigen Abständen aktualisiert wird, stößt ein Entwickler auf Ein Problem, bei dem sich die Funktion setTimeout() unerwartet verhält. Anstatt nach einer bestimmten Verzögerung auszuführen, wird die Funktion sofort ausgeführt.

Nach Prüfung des bereitgestellten Codeausschnitts:

window.onload = function GetUsersNumber() {
    //...
    setTimeout(GetUsersNumber(), 50000);
}
Nach dem Login kopieren

Das Problem liegt darin, wie die Funktion setTimeout() aufgerufen wird. In JavaScript werden Funktionsaufrufe durch Klammern nach dem Funktionsnamen gekennzeichnet. In diesem Fall rufen die Klammern nach GetUsersNumber() die Funktion jedoch sofort auf, anstatt sie als Referenz zu übergeben.

Um dieses Problem zu beheben, entfernen Sie die Klammern aus dem setTimeout()-Aufruf, wodurch die Funktion effektiv übergeben wird Objekt selbst:

setTimeout(GetUsersNumber, 50000);
Nach dem Login kopieren

Auf diese Weise kann setTimeout() nun die Ausführung der Funktion nach der angegebenen Verzögerung korrekt planen und so die beabsichtigte verzögerte Aktualisierung der Webseite ermöglichen Wert, ohne den Server zu überlasten.

Das obige ist der detaillierte Inhalt vonWarum wird meine Funktion „setTimeout' sofort und nicht erst nach der Verzögerung 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