首頁 >web前端 >js教程 >如何在評估條件之前暫停 JavaScript 執行 5 秒?

如何在評估條件之前暫停 JavaScript 執行 5 秒?

DDD
DDD原創
2024-11-02 00:16:31221瀏覽

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

執行暫停:實現 5 秒等待

在您的 JavaScript 程式碼中,您遇到了時間安排問題某種功能。您的目標是在評估條件之前將程式碼區塊的執行延遲 5 秒。

您提供的程式碼:

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

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

無法實現您想要的行為,因為 setTimeout函數實際上並不會延遲 if 語句的執行。相反,它會安排一個回呼函數在 5000 毫秒後執行,但 if 語句會立即執行。

要解決此問題,您可以利用 JavaScript 中的非同步程式設計技術,該技術提供了一種暫停執行流和稍後再恢復。這裡有兩種方法可以滿足您的要求:

基於瀏覽器的解決方案

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

在此解決方案中,我們定義了一個名為delay的實用函數,它創建了一個promise在指定的毫秒數後解析。 async 關鍵字用於使 stateChange 函數非同步,允許其暫停執行,直到 Promise 解析。

Node.js 解決方案

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

此解決方案利用Node.js 的內建setTimeout 函數會傳回一個Promise,讓您暫停執行直到Promise 得到解決。 async 關鍵字的使用與前面的範例相同。

以上是如何在評估條件之前暫停 JavaScript 執行 5 秒?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn