在 JavaScript 中,setTimeout() 函數安排函數在指定的毫秒數後執行。但是,它不會停止程式碼的執行,這意味著下一行程式碼將在 setTimeout() 呼叫後立即執行,無論指定的延遲如何。
您的程式碼旨在等待 5 秒,然後再檢查 newState 是否等於 -1。但是,由於 setTimeout() 不會阻塞程式碼,因此在 5 秒延遲發生之前立即進行檢查。
要實現所需的行為,您需要使用一種機制可以將程式碼的執行暫停 5 秒鐘。您可以考慮兩種現代方法:
ES6 引入了 async/await 語法,它允許您以更同步的方式編寫非同步程式碼。透過將函數標記為非同步,您可以使用await關鍵字暫停執行,直到promise已解決。
<code class="javascript">const delay = ms => new Promise(resolve => setTimeout(resolve, ms)); const stateChange = async newState => { await delay(5000); if (newState === -1) { alert('VIDEO HAS STOPPED'); } };</code>
在 Node.js 16 中,timers/promises 模組提供了基於 Promise 的 setTimeout 版本。這允許您暫停執行並等待延遲完成後再繼續。
<code class="javascript">import { setTimeout } from "timers/promises"; const stateChange = async newState => { await setTimeout(5000); if (newState === -1) { console.log('VIDEO HAS STOPPED'); } };</code>
這兩種方法都將確保在執行 newState 檢查之前程式碼執行暫停 5 秒。
以上是如何在 JavaScript 中等待 5 秒再執行下一行?的詳細內容。更多資訊請關注PHP中文網其他相關文章!