有這樣一種應用場景,在滾動事件中做乙個複雜取值計算或者頻繁的觸發乙個事件,這是很影響效能並容易導致頁面卡頓的,所以要合併多次請求,通過函式做乙個精確操作。這時就會用到函式防抖或者函式節流,那麼,這兩種方式有什麼區別呢?
個人認為:
函式防抖是:當你頻繁觸發後,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 節流 第一次發生請求後,只要響應沒回來,就不...