限制乙個函式在一定時間內只能執行一次
之前有關於js防抖函式的實現,可以見js防抖函式支援多個函式呼叫
本文採用的是時間戳結合定時器方式進行節流,且可以同時支援多個函式的呼叫
立即執行,適用於頁面進入後立即載入資料,在wait時間內,fun的呼叫不會再執行
呼叫示例
// 預設執行後,在1500毫秒內再次執行只會輸出一次throttle
commonutil.throttle(
() =>
)// 第二次呼叫,只會有乙個throttle執行
commonutil.throttle(
() =>
)
/**
* 說明:md5_hex函式是對函式體進行md5編碼,作為key記錄在map中,後續在移除fun時進行比對,
* 在使用的時候,可以自行實現hash,也可以忽略,直接使用函式體的string作為key
*/import from './md5.js'
inte***ce paramsmap
class _commonutil ,500)
*/throttle(fun: function, wait: number = 1500) else
}this.functionreqmap.set(hash, )
// 執行函式呼叫
fun()
// 攔截在wait期間的函式再次呼叫,在超時後,將限制解除
settimeout(() =>
}))needremovekeys.map((value) => )
}, wait)
}}export const commonutil = new _commonutil()
js實現防抖函式和節流函式
含義 防抖函式指的是在特定的時間內沒有再次觸發,才得以進行接下來的函式執行 用途 當window.onresize不斷的調整大小的時候,為了避免不斷的重排與重繪,可以用防抖函式設定在onresize完成後一段時間內不再有視窗大小變動,此時再進行dom的重排重繪 function debounce f...
js實現函式防抖與節流
防抖 在事件被觸發n秒後再執行 如果在這n秒內又被觸發,則重新計時。節流 規定在乙個單位時間內,只能觸發一次函式。如果這個單位時間內觸發多次函式,只有一次生效。js函式防抖與節流的區別 函式防抖是某一段時間內只執行一次,而函式節流是間隔時間執行。1 通過理解函式防抖與函式節流的概念後,使用閉包實現函...
原生js物件導向實現函式節流 郝晨光
函式節流 throttle 限制乙個函式在一定時間內只能執行一次。函式節流的使用場景當事件不需要頻繁的被觸發,但是由於特定dom事件的原因不斷的觸發事件的時候 在你需要用它的時候,你自然而然會知道是什麼時候!如 input事件,resize事件,scroll事件,mousemove事件,touchm...