防抖與節流

2022-02-22 15:36:55 字數 681 閱讀 5152

函式防抖:觸發高頻時間後n秒內函式只會執行一次,如果n秒內高頻事件再次被觸發,則重新計算時間。

函式節流:高頻事件觸發,一定時間內只能執行一次。(大白話:當高頻事件觸發時,第一次會立即執行,而後再怎麼頻繁地觸發事件,只有等待上一次時間執行完了,才會再次觸發。)

作用:函式防抖和函式節流都是為了限制函式的執行頻次,以優化函式觸發頻率過高導致的響應速度跟不上觸發頻率,出現延遲,假死或卡頓的現象。

1、防抖案例

//

防抖案例:每次觸發事件時都取消之前的延時呼叫方法

function

debounce() , 1000);

};}but.addeventlistener('click', debounce());

2、節流案例

//

節流案例:每次觸發事件都判斷之前的延時器是否執行完畢

function

throttle(),1000)}}

}but.addeventlistener("click",throttle());

總結:

函式防抖:不管操作多少次,只在最後一次事件才觸發函式。

節流與防抖

瀏覽器中某些計算和處理要比其他的昂貴,例如在瀏覽器中操作dom比非dom互動需要更多的記憶體和cpu的事件,連續嘗試進行過多的dom相關操作可能ui導致瀏覽器掛起,有時甚至會崩潰。尤其在ie中使用onresize事件處理程式的時候容易發生,當調整瀏覽器大小的時候,該事件會連續觸發。在onresize...

防抖與節流

防抖 當事件持續觸發,一定時間內沒有觸發事件函式處理一次。比如輸入框的ajax請求做模糊查詢 節流 當時間持續觸發,在一秒內只能觸發一次。比如滾動條持續向下滾動,載入更多資料 function debounce fn,wait function throttle func,delay functio...

節流與防抖

在實際開發中,我們經常會遇到一類需求 根據input輸入容來校驗或者搜尋資料,根據視窗的大小變化來進行相關操作等。如果事件操作函式跟使用者的操作保持實時同步,那麼當使用者的操作十分頻繁時,就會多出許多無用的事件操作,並加重瀏覽器的負擔,影響頁面的效能。這時我們可以採用debounce 防抖 和thr...