」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 我們能否在 JavaScript 中實現超越「setTimeout()」的可靠計時器精度?

我們能否在 JavaScript 中實現超越「setTimeout()」的可靠計時器精度?

發佈於2024-11-07
瀏覽:733

Can We Achieve Reliable Timer Accuracy Beyond `setTimeout()` in JavaScript?

在Javascript 中實現超越setTimeout() 的計時器精度

Javascript 的setTimeout() 方法在精度方面經常達不到要求,表現出不可預測的延遲,可能會影響UI 操作。因此,開發人員可能想知道是否有其他方法可以提供更可靠的計時功能。

使用 setTimeout() 獲得精確精度的不切實際

不幸的是,實現精確定位單獨使用 setTimeout() 來追求準確性是徒勞的。瀏覽器的設計初衷並不是提供如此精確的計時。外部 API 提供了解決方案,但它們引入了額外的依賴項,可能不適用於所有應用程式。

利用 True Time 進行精確計時

而不是僅僅依賴 setTimeout (),開發人員可以利用實時時鐘來確定任務何時執行。這涉及使用 setTimeout() 設定回調,但依賴 Javascript 的 (new Date()).milliseconds 方法或其等效方法。

此方法利用較新瀏覽器強大的計時器支持,同時保持與舊版本的兼容性。此外,它消除了對多個計時器的需要,透過避免回調競爭來提高效能。

平滑 UI 操作的最佳實踐

為了確保平滑的 UI 操作,開發人員應該放棄實現「一個定時器,一項任務」的設計。相反,他們應該使用計時器來處理指定時間間隔內的所有待處理任務。這種方法與即時時鐘資料的結合提供了一種更可預測和準確的計時機制,消除了強力 setTimeout() 使用的需要。

最新教學 更多>
  • 如何覆蓋 PHP 的 `mail()` 函數中的信封回傳地址?
    如何覆蓋 PHP 的 `mail()` 函數中的信封回傳地址?
    如何在PHP Mail 中覆蓋信封回傳地址為了解決使用PHP 的mail() 函數設定信封回傳地址的問題,這個答案提供了一個簡單的解決方案。 mail() 函數接受可選的第四個和第五個參數。雖然第四個參數用於設定標頭,但第五個參數可用於將選項直接傳遞給底層的 sendmail 命令。透過在第五個參數...
    程式設計 發佈於2024-11-07
  • 科技觀察 #1
    科技觀察 #1
    大家好,這是我上週的技術手錶,其中包含很多 #react、一點 #html、一些 #css 和 #npm。 ? https://www.totaltypescript.com/how-to-create-an-npm-package 如何建立 NPM 套件 建立、測試和發布 NPM 套件(從初始化...
    程式設計 發佈於2024-11-07
  • mysqli_fetch_array() 何時顯示錯誤「期望參數 1 為 mysqli_result,給定布林值」?
    mysqli_fetch_array() 何時顯示錯誤「期望參數 1 為 mysqli_result,給定布林值」?
    mysqli_fetch_array() 期望MySQLi 結果,而不是布林值在給定的PHP 程式碼中,錯誤「mysqli_fetch_array() 期望參數1 為mysqli_result, boolean Give" 表示使用mysqli_query() 的查詢執行失敗,傳回fals...
    程式設計 發佈於2024-11-07
  • 子集和問題的 PHP 程式
    子集和問題的 PHP 程式
    子集和問題是電腦科學和動態規劃中的經典問題。給定一組正整數和一個目標和,任務是確定是否存在給定集合的子集,其元素總和等於目標和。 子集與問題的PHP程序 使用遞歸解決方案 例子 <?php // A recursive solution for the subset sum problem /...
    程式設計 發佈於2024-11-07
  • JavaScript 陣列方法:綜合指南
    JavaScript 陣列方法:綜合指南
    数组是 JavaScript 中最基本的数据结构之一。使用数组,您可以在单个变量中存储多个值。 JavaScript 提供了许多内置方法来操作数组,使它们具有令人难以置信的通用性。在这篇文章中,我们将探讨所有内置数组方法以及如何在 JavaScript 项目中有效地使用它们。 核心方...
    程式設計 發佈於2024-11-07
  • 進階 T:依賴參數、推斷聯合以及 Twitter 上的健康互動。
    進階 T:依賴參數、推斷聯合以及 Twitter 上的健康互動。
    每次我用 TypeScript 写成 Foo 时,我都会感受到失败的沉重。 在一种情况下,这种感觉特别强烈:当函数采用的参数取决于哪个 "mode" 处于活动状态时。 通过一些示例代码更清晰: type Provider = "PROVIDER A" | "PR...
    程式設計 發佈於2024-11-07
  • 如何建立人力資源管理解決方案
    如何建立人力資源管理解決方案
    1. Understanding the Basics of Frappe and ERPNext Task 1: Install Frappe and ERPNext Goal: Get a local or cloud-based instance of ERP...
    程式設計 發佈於2024-11-07
  • 從週五黑客到發布:對創建和發布開源專案的思考
    從週五黑客到發布:對創建和發布開源專案的思考
    从周五补丁破解到发布:对创建和发布开源项目的思考 这是针对初学者和中级开发人员的系列的一部分,通过将他们的想法作为开源项目发布或引起兴趣。 这些想法是有偏见的和个人的。计划发布更多文章。通过分享一些思考,我希望能启发你做自己的项目 思考(此) 作为 Java 开发人员学习 Go l...
    程式設計 發佈於2024-11-07
  • 可以使用 constexpr 在編譯時確定字串長度嗎?
    可以使用 constexpr 在編譯時確定字串長度嗎?
    常數表達式最佳化:可以在編譯時確定字串長度嗎? 在最佳化程式碼的過程中,開發人員嘗試計算使用遞​​歸函數在編譯時計算字串文字的長度。此函數逐字元計算字串並傳回長度。 初步觀察:該函數似乎按預期工作,在運行時返回正確的長度並產生表明計算發生在編譯時的彙編程式碼。這就提出了一個問題:是否保證length...
    程式設計 發佈於2024-11-07
  • 在 Raspberry Pi 上執行 Discord 機器人
    在 Raspberry Pi 上執行 Discord 機器人
    Unsplash 上 Daniel Tafjord 的封面照片 我最近完成了一个软件工程训练营,开始研究 LeetCode 的简单问题,并觉得如果我每天都有解决问题的提醒,这将有助于让我负起责任。我决定使用按 24 小时计划运行的不和谐机器人(当然是在我值得信赖的树莓派上)来实现此操作,该机器人将执...
    程式設計 發佈於2024-11-07
  • 解鎖 JavaScript 的隱藏寶石:未充分利用的功能可提高程式碼品質和效能
    解鎖 JavaScript 的隱藏寶石:未充分利用的功能可提高程式碼品質和效能
    In the ever-evolving landscape of web development, JavaScript remains a cornerstone technology powering countless large-scale web applications. While...
    程式設計 發佈於2024-11-07
  • 為什麼透過非常量指標修改「const」變數看起來有效,但實際上並沒有改變它的值?
    為什麼透過非常量指標修改「const」變數看起來有效,但實際上並沒有改變它的值?
    透過非常量指標修改 const在 C 中,const 變數一旦初始化就無法修改。但是,在某些情況下,const 變數可能會被更改。考慮以下代碼:const int e = 2; int* w = (int*)&e; // (1) *w = 5; ...
    程式設計 發佈於2024-11-07
  • Android - 將 .aab 檔案上傳到 Play 商店時出錯
    Android - 將 .aab 檔案上傳到 Play 商店時出錯
    如果您遇到此錯誤,請按照以下步驟操作以確保與您的套件名稱和簽署金鑰保持一致: 確保 app.json 檔案中的套件名稱與您第一次上傳 .aab 檔案時所使用的套件名稱相符。 "android": { "permissions":["CAMERA","READ_EXTERNAL_STO...
    程式設計 發佈於2024-11-07
  • 如何使用 PHP 將 HTML 轉換為 PDF
    如何使用 PHP 將 HTML 轉換為 PDF
    (適用於 Windows 的指南。不適用於 Mac 或 Linux) (圖片來源) 在 PHP 中將 HTML 轉換為 PDF 的方法不只一種。您可以使用Dompdf或Mpdf;但是,這兩個庫的執行方式有所不同。 注意:本文中並未包含所有解決方案。 要使用這兩個函式庫,您將需要 Composer...
    程式設計 發佈於2024-11-07
  • C++ 會擁抱垃圾收集嗎?
    C++ 會擁抱垃圾收集嗎?
    C 中的垃圾收集:實現和共識的問題C 中的垃圾收集:實現和共識的問題雖然有人建議C 最終會包含垃圾收集器,但它仍然是爭論和持續發展的主題。要理解其中的原因,我們必須深入研究迄今為止阻礙其納入的挑戰和考慮因素。 實現複雜性在 C 中加入隱式垃圾收集是一個非-瑣碎的任務。該語言的低級性質和對指針的廣泛支...
    程式設計 發佈於2024-11-07

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

Copyright© 2022 湘ICP备2022001581号-3