防抖 节流

防抖或是节流:限制函数的执行次数

  1. 防抖:通过setTimeout的方式,在一定的时间间隔内,将多次触发变成一次触发;
  2. 节流:减少一段时间的触发频率;

防抖(debounce)

    //立即执行防抖函数
    function debounce(fn, duration) {
        let t = null
        return function() {
            if(!t) {
                fn.apply(this, arguments)
                t = setTimeout(() => {
                    t = null
                }, duration || 2000)
            }
        }
    }
    //不立即执行防抖函数
    function debounce(fn, duration) {
        let t = null
        return function() {
            if(t) {
                clearTimeout(t)
            }
            t = setTimeout(() => {
                fn.apply(this, arguments)
            }, duration || 2000)
        }
    }

节流(throttle)

function throttle(fn, delay) {
    let begin = 0
    delay = delay || 1000
    return function() {
        let end = new Date().getTime()
        if(end - begin > delay) {
            begin = end
            fn.apply(this, arguments)
        }
    }
}
#前端##学习路径#
全部评论

相关推荐

5 17 评论
分享
牛客网
牛客企业服务