使用 JavaScript 時,可能需要控制非同步操作的流程,例如逾時。在這裡,我們探索暫停和恢復活動逾時的方法,以及檢索當前逾時的剩餘時間。
要暫停逾時,您可以使用包裝器攔截 window.setTimeout 呼叫並提供必要功能的函數。包裝函數 Timer 以回調函數和延遲作為參數,並處理剩餘時間的暫停、恢復和追蹤。
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 物件並根據需要呼叫其暫停()和恢復()方法。
取得剩餘時間當前逾時時間,一種方法是儲存設定逾時時的開始時間,並在暫停時計算當前時間與開始時間之間的差異。
var start = Date.now();
var t = setTimeout("dosomething()", 5000);
var remaining = (start 5000) - Date.now();
但是,需要注意的是,如果逾時已暫停並恢復,則此計算可能不準確。在前面提供的 Timer 包裝函數中,剩餘時間被追蹤並相應更新,為檢索剩餘時間提供了更可靠的方法。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3