函式防抖和函式節流,兩者都是優化高頻率執行js**的一種手段。
"debounce"
>
點我防抖!button
>
>$(
'#debounce').
on('click'
,debounce()
);function
debounce()
,500);
}}script
>
函式防抖的應用場景,最常見的就是頁面滾動條監聽的例子,來進行解析:
let timer;
window.
onscroll
=function()
,200
)}
防抖函式的封裝使用
// 防抖函式
function
debounce
(fn,delay
),delay);}
}window.onscroll =
debounce
(function()
,200
)// jq
$(window).on
('scroll'
,debounce
(function()
,200
))
"throttle"
>
點我節流!button
>
>$(
'#throttle').
on('click'
,throttle()
);function
throttle(fn
) flag =
false
;settimeout((
)=>
,1000);
};}script
>
函式節流應用的實際場景,根據文字框中輸入的內容自動請求後台資料。
節流函式的封裝使用
type
="text"
value="
" id
="input"
>
>
// 節流函式
function
throttle
(fn, delay
) flag =
false
;settimeout((
)=>
, delay);}
}$('#input').
on('keyup'
,throttle
(function()
,1000))
;script
>
js 防抖 節流 JavaScript
實際工作中,通過監聽某些事件,如scroll事件檢測滾動位置,根據滾動位置顯示返回頂部按鈕 如resize事件,對某些自適應頁面調整dom的渲染 如keyup事件,監聽文字輸入並呼叫介面進行模糊匹配等等,這些事件處理函式呼叫的頻率如果太高,會加重瀏覽器的負擔,減弱效能,造成使用者體驗不好。此時需要採...
防抖和節流 什麼是防抖和節流
目錄二 節流 有這樣一種情況,想象有乙個表單,點選提交按鈕就傳送請求給伺服器。如果使用者在很短的時間間隔內 手抖 點選了多次,又或者是惡意點選,那麼就將傳送多個請求。該行為將造成伺服器額外的不必要負載。所謂防抖,實際上就是是處理這種常見的情況的描述。submit該段 當點選submit按鈕的時候,將...
防抖和節流
在前端開發過程中,我們經常需要繫結一些持續觸發事件,如 resize scroll mousemove等等,但有些時候我們並不希望在事件持續觸發的過程中那麼頻繁的去執行函式。通常這種情況下,我們怎麼去解決呢?一般來講,防抖和節流是比較好的解決方案。一 函式的防抖 1 什麼是函式防抖 函式防抖 deb...