首頁 >web前端 >js教程 >如何有效地暫停和恢復 JavaScript 中的逾時?

如何有效地暫停和恢復 JavaScript 中的逾時?

Barbara Streisand
Barbara Streisand原創
2024-10-23 00:18:031025瀏覽

How to Pause and Resume Timeouts in JavaScript Efficiently?

暫停和恢復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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn