什麼是防抖與節流?如何實現?

2021-10-09 07:40:51 字數 831 閱讀 2040

有這樣一種應用場景,在滾動事件中做乙個複雜取值計算或者頻繁的觸發乙個事件,這是很影響效能並容易導致頁面卡頓的,所以要合併多次請求,通過函式做乙個精確操作。這時就會用到函式防抖或者函式節流,那麼,這兩種方式有什麼區別呢?

個人認為:

函式防抖是:當你頻繁觸發後,n秒內只執行一次

函式節流是:在固定的時間內觸發事件,每隔n秒觸發一次

觸發高頻函式事件後,n秒內函式只能執行一次,如果在n秒內這個事件再次被觸發的話,那麼會重新計算時間

每次觸發事件時都取消之前的延時呼叫方法

function

debounce

(fn)

,500);

};}function

sayhi()

let box = document.

getelementbyid

('box'

) box.

addeventlistener

('click'

,debounce

(sayhi)

)

高頻事件觸發,但在n秒內只會執行一次,所以節流會稀釋函式的執行頻率

在一定的事件內只執行一次觸發事件。

function

throttle

(fn)

,500);

};}function

sayhi

(e)window.

addeventlistener

('resize'

,throttle

(sayhi)

);

防抖和節流 什麼是防抖和節流

目錄二 節流 有這樣一種情況,想象有乙個表單,點選提交按鈕就傳送請求給伺服器。如果使用者在很短的時間間隔內 手抖 點選了多次,又或者是惡意點選,那麼就將傳送多個請求。該行為將造成伺服器額外的不必要負載。所謂防抖,實際上就是是處理這種常見的情況的描述。submit該段 當點選submit按鈕的時候,將...

什麼是防抖和節流?

雖然二者都有延遲當前動作的反饋,但是防抖的延遲時間是確定的,延遲週期內如果有新動作進入,舊的動作將會被取消。而節流是提前設定了乙個閥門,只有當閥門開啟的時候,該動作才有機會執行。如果閥門是關閉的,那這個動作就不會進入執行區。個人理解防抖是後置的處理高頻事件方式,而節流是前置處理。防抖機制隱含了乙個優...

什麼是防抖和節流?有什麼區別?如何實現?

防抖 連續觸發事件,只要不是最後一次觸發,就不執行非同步操作 點我試試 button var btn document.queryselector button var timer null btn.onclick function 500 script 節流 第一次發生請求後,只要響應沒回來,就不...