節流和防抖函式應用場景及最佳化方法
作者:由 咕泡雲課堂 發表于 攝影時間:2022-04-25
一、防抖函式
應用場景
輸入框中頻繁的輸入內容,搜尋或者提交資訊;
頻繁的點選按鈕,觸發某個事件;
監聽瀏覽器滾動事件,完成某些特定操作;
search搜尋聯想,使用者在不斷輸入值時,用防抖來節約請求資源。
window觸發resize的時候,不斷的調整瀏覽器視窗大小會不斷的觸發這個事件,用防抖來讓其只觸發一次
**原理:**在事件被觸發n秒後再執行回撥,如果在這n秒內又被觸發,則重新計時。
**大白話版原理:**小明答應在三天之後還錢給小紅,但是小紅在三天內如果再催小明還錢的話,則會重新開始計算這三天時間,只有三天內小紅不催小明換錢,三天後小明才會還小紅的錢
1。基礎版防抖函式
簡單的實現了防抖函式的功能
<!DOCTYPE html>
let btn = document。querySelector(‘button’)
function debounce(fn, time) {
let timer = null
return function () {
console。log(this); //
if (timer) clearTimeout(timer)
timer = setTimeout(() => {
fn()
}, time)
}
}
btn。addEventListener(‘click’, debounce(function () {
console。log(this); //window
console。log(‘我被點選了’);
}, 1000))