防抖和節流

2022-09-05 00:03:28 字數 1114 閱讀 1035

一 防抖(debounce) 

所謂防抖,就是指觸發事件後在 n 秒內函式只能執行一次,如果在 n 秒內又觸發了事件,則會重新計算函式執行時間。 

防抖函式分為非立即執行版和立即執行版。

1.非立即執行 (非立即執行版的意思是觸發事件後函式不會立即執行,而是在 n 秒後執行,如果在 n 秒內又觸發了事件,則會重新計算函式執行時間。)

function

debounce(func, wait) , wait);

}}2.立即執行版(立即執行版的意思是觸發事件後函式會立即執行,然後 n 秒內不觸發事件才能繼續執行函式的效果。)

function

debounce(func,wait) , wait)

if }

}

3.綜合版/**

* @desc 函式防抖

* @param func 函式

* @param wait 延遲執行毫秒數

* @param immediate true 表立即執行,false 表非立即執行 */

function

debounce(func,wait,immediate) , wait)

if }

else

, wait);}}

}

二 節流(throttle)

所謂節流,就是指連續觸發事件但是在 n 秒中只執行一次函式。節流會稀釋函式的執行頻率。

節流同樣有兩個辦法 乙個是時間戳 另乙個為定時器

這個原理很簡單 所以直接上綜合版/**

* @desc 函式節流

* @param func 函式

* @param wait 延遲執行毫秒數

* @param type 1 表時間戳版,2 表定時器版 */

function

throttle(func, wait ,type)

else

if(type===2)

return

function

() }

else

if(type===2), wait)}}

}}

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

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

防抖和節流

在前端開發過程中,我們經常需要繫結一些持續觸發事件,如 resize scroll mousemove等等,但有些時候我們並不希望在事件持續觸發的過程中那麼頻繁的去執行函式。通常這種情況下,我們怎麼去解決呢?一般來講,防抖和節流是比較好的解決方案。一 函式的防抖 1 什麼是函式防抖 函式防抖 deb...

防抖和節流

防抖和節流的作用都是防止函式多次呼叫。區別在於,假設乙個使用者一直觸發這個函式,且每次觸發函式的間隔小於設定的時間,防抖的情況下只會呼叫一次,而節流的情況會每隔一定時間呼叫一次函式。1.防抖 函式防抖 debounce n秒內函式只會執行一次,如果n秒內高頻事件再次被觸發,則重新計算時間。如下例,對...