使用 JavaScript 時,可能需要控制非同步操作(例如超時)的流程。在這裡,我們探索暫停和恢復活動逾時的方法,以及檢索當前逾時的剩餘時間。
要暫停超時,您可以使用包裝器攔截 window.setTimeout 呼叫並提供必要功能的函數。包裝函數 Timer 以回調函數和延遲作為參數,並處理暫停、恢復和追蹤剩餘時間。
<code class="javascript">var Timer = function(callback, delay) { var timerId, start, remaining = delay; this.pause = function() { window.clearTimeout(timerId); timerId = null; remaining -= Date.now() - start; }; this.resume = function() { if (timerId) { return; } start = Date.now(); timerId = window.setTimeout(callback, remaining); }; this.resume(); };</code>
要使用此包裝器,請實例化一個 Timer 物件並呼叫其根據需要使用pause()和resume()方法。
要取得目前逾時的剩餘時間,一種方法是儲存設定逾時時的開始時間,計算暫停時目前時間與開始時間的差值。
<code class="javascript">var start = Date.now(); var t = setTimeout("dosomething()", 5000); var remaining = (start + 5000) - Date.now();</code>
但是要注意的是,如果超時暫停又恢復,這個計算可能不準確。在前面提供的 Timer 包裝函數中,剩餘時間被追蹤並相應更新,為檢索剩餘時間提供了更可靠的方法。
以上是JavaScript 如何控制逾時執行並確定剩餘時間?的詳細內容。更多資訊請關注PHP中文網其他相關文章!