提供的程式碼嘗試使用setTimeout 函數將操作的執行延遲5 秒:
<code class="javascript">function stateChange(newState) { setTimeout('', 5000); if(newState == -1) { alert('VIDEO HAS STOPPED'); } }</code>
但是,程式碼在安排逾時後立即檢查條件newState == -1,從而消除了預期的延遲。
正確的解決方案涉及使用非同步將 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中文網其他相關文章!