In JavaScript plant die Funktion setTimeout() die Ausführung einer Funktion nach einer angegebenen Anzahl von Millisekunden. Die Ausführung des Codes wird jedoch nicht angehalten, was bedeutet, dass die nächste Codezeile unmittelbar nach dem Aufruf von setTimeout() ausgeführt wird, unabhängig von der angegebenen Verzögerung.
Ihr Code soll 5 Sekunden warten, bevor überprüft wird, ob newState gleich -1 ist. Da setTimeout() den Code jedoch nicht blockiert, erfolgt die Überprüfung sofort, bevor die Verzögerung von 5 Sekunden auftritt.
Um das gewünschte Verhalten zu erreichen, müssen Sie einen Mechanismus verwenden Dadurch kann die Ausführung Ihres Codes für 5 Sekunden angehalten werden. Es gibt zwei moderne Ansätze, die Sie in Betracht ziehen können:
ES6 hat die Async/Await-Syntax eingeführt, die es Ihnen ermöglicht, asynchronen Code in einem synchroneren Stil zu schreiben. Indem Sie Ihre Funktion als asynchron markieren, können Sie das Schlüsselwort „await“ verwenden, um die Ausführung anzuhalten, bis ein Versprechen gelöst ist.
<code class="javascript">const delay = ms => new Promise(resolve => setTimeout(resolve, ms)); const stateChange = async newState => { await delay(5000); if (newState === -1) { alert('VIDEO HAS STOPPED'); } };</code>
In Node.js 16 stellt das Timers/Promises-Modul eine Promise-basierte Version von setTimeout bereit. Dadurch können Sie die Ausführung anhalten und warten, bis die Verzögerung abgeschlossen ist, bevor Sie fortfahren.
<code class="javascript">import { setTimeout } from "timers/promises"; const stateChange = async newState => { await setTimeout(5000); if (newState === -1) { console.log('VIDEO HAS STOPPED'); } };</code>
Beide Ansätze stellen sicher, dass die Codeausführung 5 Sekunden lang angehalten wird, bevor die newState-Prüfung durchgeführt wird.
Das obige ist der detaillierte Inhalt vonWie kann ich in JavaScript 5 Sekunden warten, bevor ich die nächste Zeile ausführe?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!