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?

Barbara Streisand
Barbara StreisandOriginal
2024-12-13 05:43:18673Durchsuche

Why is my `setTimeout` Function Executing Immediately Instead of After the Delay?

Problem mit der Verzögerung des Aufrufs der setTimeout-Funktion

Beim Versuch, einen 5-Sekunden-Abfragemechanismus für eine HTML-Wertaktualisierung zu implementieren, kann es bei Benutzern zu unerwartetem Verhalten kommen wobei die Funktion setTimeout() sofort statt nach der vorgesehenen Verzögerung aufgerufen wird. Dies kann die gewünschten gestaffelten Serveranfragen verhindern.

Ursache:

Das Problem ist auf die falsche Art und Weise zurückzuführen, wie die Funktion setTimeout() aufgerufen wird.

Original Code:

setTimeout(GetUsersNumber(), 50000);

Erklärung:

In JavaScript können Funktionen als Objekte ohne Klammern definiert werden. Um eine Funktion aufzurufen, müssen ihr jedoch Klammern folgen. Im Originalcode wird die Funktion GetUsersNumber() direkt innerhalb von setTimeout() aufgerufen und nicht als Funktionsreferenz übergeben.

Lösung:

An Um das Problem zu beheben, entfernen Sie einfach die Klammern nach dem Funktionsnamen im setTimeout()-Argument:

setTimeout(GetUsersNumber, 5000); // 5 seconds instead of 50

Dadurch wird sichergestellt, dass setTimeout() a erfasst Verweis auf das GetUsersNumber-Funktionsobjekt selbst, sodass die Funktion aufgerufen werden kann, wenn die Verzögerung abgeschlossen ist.

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!

Stellungnahme:
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