手寫 debounce 防抖函式和 throttle 節流函式
防抖和節流函式是前端常見的效能優化的技巧,透過這兩個函式可以有效的減少函式被觸發的次數,達到效能優化的目的。
debounce 防抖函式
防抖函式的作用是在一段時間內只執行一次函式。當多次觸發事件時,防抖函式會在最後一次事件觸發後的一段時間內執行一次函式。如果在這段時間內再次觸發事件,計時器會重新計時。
應用場景
- 輸入框搜尋建議:當使用者在搜尋框中輸入時,如果每次按鍵都立即發送請求,這將導致過多的請求。在使用防抖函式後,只有使用者停止輸入一段時間後才會發送搜尋請求。
- 按鈕防連點:當使用者連續點擊按鈕時,如果沒有防抖函式,每次點擊都會觸發事件。使用防抖函式後,只有最後一次點擊會觸發事件。
- 調整瀏覽器大小事件:如果每次窗口大小調整時都進行重新渲染,會造成性能浪費。可以使用防抖讓瀏覽器大小調整完畢後才進行重繪。