Heim  >  Artikel  >  Web-Frontend  >  Wie kann ich die JavaScript-Ausführung für 5 Sekunden anhalten, bevor eine Bedingung ausgewertet wird?

Wie kann ich die JavaScript-Ausführung für 5 Sekunden anhalten, bevor eine Bedingung ausgewertet wird?

DDD
DDDOriginal
2024-11-02 00:16:31127Durchsuche

How to Pause JavaScript Execution for 5 Seconds Before Evaluating a Condition?

Eine Pause in der Ausführung: Implementierung einer 5-Sekunden-Wartezeit

In Ihrem JavaScript-Code stoßen Sie auf ein Problem mit dem Timing von eine bestimmte Funktion. Ihr Ziel ist es, die Ausführung eines Codeblocks um 5 Sekunden zu verzögern, bevor eine Bedingung ausgewertet wird.

Der von Ihnen bereitgestellte Code:

<code class="js">function stateChange(newState) {
  setTimeout('', 5000);

  if(newState == -1) {
    alert('VIDEO HAS STOPPED');
  }
}</code>

erreicht aufgrund des setTimeout nicht Ihr gewünschtes Verhalten Die Funktion verzögert die Ausführung der if-Anweisung nicht wirklich. Stattdessen plant es eine Rückruffunktion, die nach 5000 Millisekunden ausgeführt wird, aber die if-Anweisung wird sofort ausgeführt.

Um dieses Problem zu beheben, können Sie asynchrone Programmiertechniken in JavaScript nutzen, die eine Möglichkeit bieten, den Ausführungsfluss anzuhalten und setzen Sie es später fort. Hier sind zwei Ansätze, die Ihren Anforderungen gerecht werden können:

Browserbasierte Lösung

<code class="js">const delay = ms => new Promise(res => setTimeout(res, ms));

async function stateChange(newState) {
  await delay(5000);
  console.log("Waited 5s before checking condition");

  if (newState == -1) {
    alert('VIDEO HAS STOPPED');
  }
}</code>

In dieser Lösung definieren wir eine Hilfsfunktion namens Verzögerung, die ein Versprechen erstellt das nach der angegebenen Anzahl von Millisekunden aufgelöst wird. Das Schlüsselwort async wird verwendet, um die stateChange-Funktion asynchron zu machen, sodass die Ausführung angehalten werden kann, bis das Versprechen aufgelöst wird.

Node.js-Lösung

<code class="js">const { setTimeout } = require("timers/promises");

async function stateChange(newState) {
  await setTimeout(5000);
  console.log("Waited 5s before checking condition");

  if (newState == -1) {
    alert('VIDEO HAS STOPPED');
  }
}</code>

Diese Lösung verwendet Die integrierte setTimeout-Funktion von Node.js, die ein Versprechen zurückgibt, sodass Sie die Ausführung anhalten können, bis das Versprechen gelöst ist. Das Schlüsselwort async wird wie im vorherigen Beispiel verwendet.

Das obige ist der detaillierte Inhalt vonWie kann ich die JavaScript-Ausführung für 5 Sekunden anhalten, bevor eine Bedingung ausgewertet wird?. 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