首頁  >  文章  >  web前端  >  如何設定超時後延遲5秒執行程式碼?

如何設定超時後延遲5秒執行程式碼?

Barbara Streisand
Barbara Streisand原創
2024-10-26 03:26:27273瀏覽

How Can I Delay Code Execution for 5 Seconds After Setting a Timeout?

延遲程式碼執行5 秒

提供的程式碼嘗試使用setTimeout 函數將操作的執行延遲5 秒:

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

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

但是,程式碼在安排逾時後立即檢查條件newState == -1,從而消除了預期的延遲。

瀏覽器/Node.js 解決方案

正確的解決方案涉及使用非同步將 if 語句的執行延遲到 5 秒後的程式設計技術。對於瀏覽器,您可以使用async/await 語法:

<code class="javascript">// Utility function
const delay = ms => new Promise(res => setTimeout(res, ms));

// Function to wait 5 seconds before checking newState
const stateChange = async (newState) => {
  await delay(5000);
  if (newState == -1) {
    alert('VIDEO HAS STOPPED');
  }
};</code>

對於Node.js 16 及更高版本,您可以利用內建的基於Promise 的setTimeout:

<code class="javascript">import { setTimeout } from "timers/promises";

const stateChange = async (newState) => {
  await setTimeout(5000);
  if (newState == -1) {
    alert('VIDEO HAS STOPPED');
  }
};</code>

請記得檢查瀏覽器對async/await 的支援以及內建基於Promise 的setTimeout 的Node.js 版本。

以上是如何設定超時後延遲5秒執行程式碼?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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