」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > JavaScript 如何控制逾時執行並確定剩餘時間?

JavaScript 如何控制逾時執行並確定剩餘時間?

發佈於2024-11-08
瀏覽:758

How Can I Control Timeout Execution and Determine Remaining Time in JavaScript?

JavaScript 中的暫停和恢復逾時

使用 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 包裝函數中,剩餘時間被追蹤並相應更新,為檢索剩餘時間提供了更可靠的方法。

版本聲明 本文轉載於:1729595660如有侵犯,請洽[email protected]刪除
最新教學 更多>
  • 如何產生等概率地求和到預定義值的隨機數?
    如何產生等概率地求和到預定義值的隨機數?
    產生隨機數求和到預定義值在這種情況下,我們的目標是產生一個偽隨機數列表,這些偽隨機數共同添加直至特定的預定值。一種方法是隨機產生指定範圍內的數字,將其從總數中減去,然後重複此過程,直到總和等於所需值。然而,這種方法在對總和的貢獻方面有利於第一個產生的數字。 為了確保一致性,開發了更複雜的解決方案:i...
    程式設計 發佈於2024-11-08
  • 如何在 Matplotlib 中正確對齊旋轉的 XTickLabels?
    如何在 Matplotlib 中正確對齊旋轉的 XTickLabels?
    對齊旋轉的XTickLabels 以實現精確對齊在給定的圖中,旋轉的x 軸刻度標籤看起來向右移動而不是對齊與他們各自的刻度線。出現這種不對齊的原因是預設圍繞文字標籤中間的旋轉居中。 要解決此問題,您可以使用 ha 參數指定刻度標籤的水平對齊方式。此參數定義旋轉標籤周圍的假想矩形框的哪一側應與刻度點對...
    程式設計 發佈於2024-11-08
  • Java 記憶體模型:深入理解並發性
    Java 記憶體模型:深入理解並發性
    介紹 Java 記憶體模型 (JMM) 是 Java 並發程式設計的一個基本但經常被誤解的面向。 JMM 是隨 Java 5 引入的,它定義了執行緒如何與記憶體交互,確保多執行緒程式的一致性和可預測性。在本文中,我們將深入探討 JMM,探討其關鍵概念,並研究它如何影響並發 Java...
    程式設計 發佈於2024-11-08
  • 如何在 JavaScript 中存取 iFrame 元素並與之互動?
    如何在 JavaScript 中存取 iFrame 元素並與之互動?
    在 JavaScript 中存取 iFrame 元素瀏覽錯綜複雜的 JavaScript 通常會帶來挑戰,尤其是在處理 iFrame 時。當嘗試從 iFrame 的子頁面擷取駐留在 iFrame 中的文字區域的值時,會出現常見的困境。傳統方法在這方面有不足之處。 要深入研究解決方案,承認瀏覽器施加的...
    程式設計 發佈於2024-11-08
  • 如何透過修改 PYTHONPATH 或 ~/.pylintrc 解決 PyLint 中的「無法匯入」錯誤?
    如何透過修改 PYTHONPATH 或 ~/.pylintrc 解決 PyLint 中的「無法匯入」錯誤?
    如何透過設定PYTHONPATH 解決PyLint 中的「無法匯入」錯誤使用時遇到「無法匯入X」錯誤時PyLint,特別是對於從子目錄匯入的模組,根本原因可能在於Python路徑中解決方案1:修改PYTHONPATH環境變數一個有效的解決方案是調整PYTHONPATH環境變數以合併包含導入的目錄,確...
    程式設計 發佈於2024-11-08
  • 網站所有者如何防止第三方 Iframe 嵌入?
    網站所有者如何防止第三方 Iframe 嵌入?
    防止第三方 iframe 嵌入網站所有者經常面臨其頁面嵌入第三方框架 (iframe) 的問題網站。雖然引用請求標頭在頁面載入期間檢測這種情況時被證明無效,但有多種方法可以解決此問題。 JavaScript 檢測頁面載入後,JavaScript可以用來偵測它是否正在框架內顯示。透過比較 top 和 ...
    程式設計 發佈於2024-11-08
  • 令人興奮的體育週:亮點和亮點
    令人興奮的體育週:亮點和亮點
    過去的一周對於全球最新體育評論愛好者來說是一段令人興奮的旅程。從破紀錄的表演到扣人心弦的結局,這裡匯總了體育界最激動人心的賽事。 足球:英超聯賽令人震驚 英超震撼人心 英超聯賽總是充滿戲劇性,本周也不例外。曼城在一場萬眾矚目的比賽中迎戰利物浦隊,最終令人驚訝地3-3戰平。兩支球隊都...
    程式設計 發佈於2024-11-08
  • 如何使用 NumPy 的「np.newaxis」在陣列操作中啟用廣播?
    如何使用 NumPy 的「np.newaxis」在陣列操作中啟用廣播?
    NumPy 的'np.newaxis' 是什麼以及如何使用它理解'np.newaxis'NumPy 的“np.newaxis”,也稱為“None”,是一個偽索引,用於臨時向數組添加軸。使用一次時,它將數組的維度增加一。例如,1D 數組變成 2D 數組,2D 數組變成 ...
    程式設計 發佈於2024-11-08
  • React原始碼中MessageChannel的使用
    React原始碼中MessageChannel的使用
    這篇文章我們分析React原始碼中MessageChannel的用法。 我們先來了解什麼是MessageChannel。 訊息頻道 Channel Messaging API 的 MessageChannel 介面允許我們建立一個新的訊息通道並透過它的兩個 MessagePort...
    程式設計 發佈於2024-11-08
  • MySQL 如何處理較短列中的長整數:溢位或截斷?
    MySQL 如何處理較短列中的長整數:溢位或截斷?
    較短列的長整數轉換:機制與公式將長整數插入較短整數列時,MySQL 通常會截斷該值以適合指定的長度。但是,在某些情況下,行為可能會有所不同,從而導致意外的轉換。 考慮一個 10 位長整數列 some_number。如果將超過最大整數範圍 (2147483647) 的值插入到此列中,MySQL 會將該...
    程式設計 發佈於2024-11-08
  • 如何在教義 2 中建立額外欄位的多對多連結表?
    如何在教義 2 中建立額外欄位的多對多連結表?
    Doctrine 2 和額外欄位的多對多連結表本文解決了在Dotrine 2 中建立多對多關係的問題,其中連結表包含一個附加價值,特別是在庫存系統的上下文中。 原則 2 中的多對多關係可以使用不包含任何附加欄位的連結表來建立。但是,當每個連結都需要額外的值時,必須將連結表重新定義為新實體。 提供的程...
    程式設計 發佈於2024-11-08
  • JavaScript 中的單管道運算子如何處理浮點數和整數?
    JavaScript 中的單管道運算子如何處理浮點數和整數?
    探索JavaScript 中單管道運算子的位元性質在JavaScript 中,單一管道運算子(「|」)執行按位運算稱為位元或的運算。理解此操作對於理解其對不同輸入值的影響至關重要,如下例所示:console.log(0.5 | 0); // 0 console.log(-1 | 0); // -1...
    程式設計 發佈於2024-11-08
  • 列表理解和Regae
    列表理解和Regae
    啊。我一直害怕的那一刻。 第一篇文章,包含我自己的想法、觀點和可能的知識細分。 請注意,親愛的讀者,這並不是對 Python 單行 for 循環、追加到列表和返回一些數據的能力的深入探討或令人難以置信的分解。不,不。這只是展示瞭如何有趣——以及如何愚蠢——小東西可以組合在一起,讓...
    程式設計 發佈於2024-11-08
  • 如何解決 WAMP 上由於缺少 Openssl 擴充功能而導致的 Composer 錯誤?
    如何解決 WAMP 上由於缺少 Openssl 擴充功能而導致的 Composer 錯誤?
    Composer 有問題? WAMP 上缺少Openssl 擴充功能嘗試將Composer 合併到WAMP 設定中時,您可能會遇到警告:「The openssl 擴充功能遺失。」此訊息表明,如果沒有此擴充程序,您的系統的安全性和穩定性將會受到影響。 故障排除步驟:您已經認真瀏覽了 WAMP 介面,標...
    程式設計 發佈於2024-11-08
  • 如何解決 Windows 上 PHP 中的 SSL 套接字傳輸問題?
    如何解決 Windows 上 PHP 中的 SSL 套接字傳輸問題?
    解決PHP 中的SSL Socket 傳輸問題在Windows 系統上使用PHP 時,開發人員可能會遇到錯誤「無法連線到ssl: //...”由於啟用“ssl”套接字傳輸存在困難。本文將指導您排除故障並解決此問題,並介紹您迄今為止已採取的具體步驟。 故障排除步驟檢查PHP 設定:確保php_open...
    程式設計 發佈於2024-11-08

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3