您是否曾經訪問過某個網站,在搜尋欄中輸入內容,並註意到建議是如何即時彈出的,而不會造成任何延遲?或者,您可能已經填寫了一份表格,並在打字時看到「使用者名稱已被佔用」訊息出現。這些無縫體驗的背後是現代網路開發中一個強大的、常常被忽視的英雄:去抖動。
去抖動是一種程式設計技術,可確保函數僅在指定的不活動時間後執行。想像一下您正在搜尋欄中輸入內容。如果沒有去抖,每次擊鍵都會觸發函數調用,可能會因冗餘請求而壓垮系統。去抖動透過在執行函數之前等待輸入暫停來解決這個問題,確保只發送一個請求。
其核心是控制函數執行的頻率。但為了更容易理解,讓我們舉一個門鈴的例子。假設有一個門啤酒在 3 秒不活動後響起。在初次響鈴後,如果使用者嘗試多次按鈴,除非他決定再過 3 秒,否則它不會響。
在 JavaScript 中,去抖動通常與輸入、捲動或調整大小等事件偵聽器一起使用。這是一個基本的實作:
function debounce(callback, delay) { let timeoutId; return (...args) => { clearTimeout(timeoutId); timeoutId = setTimeout(() => { callback(...args); }, delay); }; }
讓我們來了解這段程式碼的不同元素:
function debounce(callback, delay) { let timeoutId; return (...args) => { clearTimeout(timeoutId); timeoutId = setTimeout(() => { callback(...args); }, delay); }; }
const handleSearch = debounce((query) => { fetch(`https://api.example.com/search?q=${query}`) .then((response) => response.json()) .then((data) => console.log(data)); }, 500); document.getElementById("search").addEventListener("input", (e) => { handleSearch(e.target.value); });
.
.
.
.
.
接受建議
對改進此部落格有見解或其他提示嗎?請隨時分享您的回饋!您的意見對於增強未來的內容非常寶貴。
以上是JS 中的反跳:建立更好的 Web 應用程式的詳細內容。更多資訊請關注PHP中文網其他相關文章!