js 防抖节流

节流和防抖本质上都是控制事件执行的频率

防抖是在用户多次触发事件,当用户停止触发事件时,将事件执行一次  (模糊搜索)

节流是在用户多次触发事件过程中,间隔执行事件  (监听用户用户滚动事件,无限加载数据)

 

//    防抖 @fn 是对应请求数据

    // @ms 是用户多次触发事件的时间间隔 是一个毫秒数
    function debounce(fn, ms) {
        let timeout = null
        return function() {
            clearTimeout(timeout)
            timeout = setTimeout(() => {
                fn.apply(this, arguments)
            }, ms)
        }
    }

 

 

// 节流 @fn 是对应请求数据

// @ms 是用户多次触发事件的时间间隔 是一个毫秒数
 function throttle(fn, ms){
    let flag = true
    return function(){
        if(!flag) return
        flag = false
        setTimeout(()=>{
            fn.apply(this, arguments)
            flag = true
        }, ms)
    }
}
posted @ 2022-06-08 15:35  我是一名好程序员  阅读(36)  评论(0编辑  收藏  举报