執行暫停:實現 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中文網其他相關文章!