Heim >Web-Frontend >js-Tutorial >Warum wird meine Funktion „setTimeout' sofort und nicht erst nach der Verzögerung ausgeführt?
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); }
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);
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!