JS防抖動和限流

2021-10-10 06:16:15 字數 1324 閱讀 7280

防抖動:第一次被觸發後,在規定時間段內又被觸發,會消除第一次延遲函式,執行後續延遲函式。

/* 

暴力防抖動:

缺點:頻繁建立、刪除定時任務

*/function

debounce_01

(func, delay)

, delay)}}

/* 防抖動優化

*/function

debounce_02

(func, delay)

else

}, timerinterval)};

return

(...args)

=>}}

/* 待執行函式 */

function

printmess

(message)

/* 防抖動01測試 */

// settimeout(function() , 100);

// settimeout(function() , 100);

/* 防抖動02測試 */

debounce_02

(printmess,

200);(

"第一次");

settimeout

(function()

,100);

settimeout

(function()

,100

);

限流:指定時間段內再次被觸發,後續不會有效果,第一次延遲函式執行後,才能再次設定新的延遲函式。

/* 限流 */

function

throttle_01

(func, delay, immediate=

false

)else

, delay);}

}}}/* 待執行函式 */

function

printmess

(message)

/* 節流01測試 */

throttle_01

(printmess,

300);(

"第一次");

settimeout

(function()

,100);

settimeout

(function()

,100

);

試用場景:

​ 防抖動:連續間斷請求

​ 限流:連續不間斷請求

js實現頁面防抖動

問題 針對頻繁觸發scoll resize繫結的事件函式,有可能短時間多次觸發時事件,影響效能 思路 多個函式呼叫合成一次,給定時間後僅呼叫最後一次 包裝事件的debounce函式 function debounce func,delay delay 當使用者滾動時被呼叫的函式 function f...

js 防抖動與節流

針對一些會頻繁觸發的事件如scroll resize,如果正常繫結事件處理函式的話,有可能在很短的時間內多次連續觸發事件,十分影響效能。因此針對這類事件要進行防抖動或者節流處理 它的做法是限制下次函式呼叫之前必須等待的時間間隔。正確實現 debouncing 的方法是將若干個函式呼叫合成 一次,並在...

js 函式節流 與 防抖動

函式節流 就如同成都搖號買房,前乙個進去選房了,下乙個就要等一段時間。這種策略就很好的解決了,一大波人進去選房,銷售妹妹沒發接待的尷尬局面。應用場景 監聽瀏覽器滾動條,然後觸發函式。普通做法 document.getelementbyid throttle onscroll function 函式節...