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