Heim  >  Artikel  >  Web-Frontend  >  Wie kann ich in JavaScript 5 Sekunden warten, bevor ich die nächste Zeile ausführe?

Wie kann ich in JavaScript 5 Sekunden warten, bevor ich die nächste Zeile ausführe?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-10-26 07:01:31227Durchsuche

How to Wait 5 Seconds Before Executing the Next Line in JavaScript?

Warten Sie 5 Sekunden, bevor Sie die nächste Zeile ausführen

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

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.

Lösung

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:

1. Async/Await-Syntax (nur Browser)

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>

2. Timers/Promises-Modul (nur Node.js)

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!

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