防抖 节流

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

  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)
        }
    }
}
#前端##学习路径#
全部评论

相关推荐

04-29 22:35
门头沟学院 Java
牛友说改了名字能收到offer:旧图新发查看图片
点赞 评论 收藏
分享
每晚夜里独自颤抖:你cet6就cet6,cet4就cet4,你写个cet证书等是什么意思。专业技能快赶上项目行数,你做的这2个项目哪里能提现你有这么多技能呢
点赞 评论 收藏
分享
评论
5
17
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务