1,防抖:规定时间内多次执行,只执行最后一次。

有比喻:电梯每次触发,到关门中间间隔15s,如果A按了电梯,等待15s电梯才会关门,但是15s内B按了电梯,那就要开始重新计时

使用场景:输入框中输入内容,进行联想查询。我们希望的是用户输完后进行查询,而不是用户输入过程中频繁查询

function debounce(func, delay){
    let timer = null
    return function(...args){
        if (timer) clearTimeout(timer)
        timer = setTimeout(() => {
            func.apply(this,args)
        }, delay)
    }
}

2,节流:规定时间内多次执行,只执行第一次。

有比喻:电梯每次触发,到关门中间间隔15s,如果A按了电梯,等待15s电梯才会关门,在这15s内不管有没有人按下电梯,到15s的时候都会关门

使用场景:页面无线加载的过程中,滑到底部自动加载

function throttle(func, delay){
    let timer = null
    return function(...args){
        if (timer) return
        timer = setTimeout(() => {
            func.apply(this, args)
            timer = null
        }, delay)
    }

posted on 2022-09-06 14:50  Zoie_ting  阅读(100)  评论(0编辑  收藏  举报