暫停和恢復JavaScript 超時
在JavaScript 中使用setTimeouts 時,暫停和恢復它們的功能在各種情況下都非常有用。人們可能會遇到這樣一種情況:已配置延遲,但在執行之前需要暫停或等待非同步操作完成。
使用自訂包裝器暫停和恢復超時
無需存儲當前時間併計算剩餘持續時間,可以圍繞window.setTimeout 創建一個提供暫停和恢復功能的自訂包裝器。這種方法提供了一種更優雅且可重複使用的解決方案:
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(); };
此自訂 Timer 類別可讓您根據需要暫停和恢復逾時。要使用它,請使用回調函數和延遲對其進行初始化,然後根據需要呼叫pause()或resume()方法。
範例:
var timer = new Timer(function() { alert("Done!"); }, 1000); timer.pause(); // Perform asynchronous operations or other tasks timer.resume();
注意: 此自訂包裝器不提供擷取暫停計時器的剩餘時間的方法。或者,可以實作一個更全面的包裝器來追蹤剩餘時間並提供 getTimeRemaining() 方法。
以上是如何有效地暫停和恢復 JavaScript 中的逾時?的詳細內容。更多資訊請關注PHP中文網其他相關文章!