函式節流和防抖

2021-09-19 06:23:25 字數 720 閱讀 4222

click scroll resize change這些事件會被頻繁觸發,如果改變了元素的位置,會引起回流和重繪,影響使用者體驗。對於優化這種現象,有節流和防抖兩種方案。

函式防抖,通過 settimeout 和cleartimeout來實現,延遲執行函式。如果函式多次觸發,則把上次記錄的延遲執行**用 cleartimeout 清掉,重新開始。如果計時完畢,沒有方法進來訪問觸發,則執行**。

var timer =

false

;document.

getelementbyid

("debounce").

onscroll

=function()

,300);

};

函式節流是指一定時間內方法只執行一次。宣告乙個變數表示函式當前狀態,如果在一定時間內再次被觸發就直接 return 出去,如果沒有就將狀態改為已執行狀態,執行完就將狀態改回未執行狀態。

var isrun =

false

;document.

getelementbyid

("throttle").

onscroll

=function()

isrun =

true

;settimeout

(function()

,300);

};

函式防抖和函式節流

1 函式防抖 函式防抖是指頻繁觸發的情況下,只有足夠的時間,才執行 一次,函式防防抖的要點也是要乙個settimeout來輔助實現,延遲執行需要跑的 如果方法多次觸發,則把上次記錄的延遲執行 用cleartimeout清理掉,重新開始。如果計時完畢,沒有方法來訪問觸發。則執行 函式防抖的應用場景,最...

函式防抖和函式節流

首先分別用一句話區分函式防抖和節流的區別。函式防抖就是在使用者停下相應動作,並在給定時間過去之後僅被呼叫一次。函式節流是使用者在執行相應動作時,每隔一段時間發一次請求。針對一些頻繁觸發的事件如scroll keyup resize,如果正常繫結事件的話,可能在很短的時間內連續觸發事件,十分影響效能。...

函式節流和函式防抖

概念 在規定的時間段內 例如1000ms 即使事件觸發了很多次,都只執行一次對應的任務。栗子 在我們進入地鐵站時通過閘機,每隔3秒內只允許乙個人通過,即使多個人同時刷卡,也只允許乙個人通過。運用場景 如果我們在改變瀏覽器的大小或者監聽滑鼠移動事件等事件 短時間內觸發多次 為了節省瀏覽器效能開銷,就可...