防抖動:第一次被觸發後,在規定時間段內又被觸發,會消除第一次延遲函式,執行後續延遲函式。
/*
暴力防抖動:
缺點:頻繁建立、刪除定時任務
*/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 函式節...