防抖与节流记录

2020-05-08  本文已影响0人  leesession

1.防抖
应用场景:输入框不断输入时、window不断触发resize时

function debounce(func,wait) {
    let timer = null;
    return function () {
        if(timer){
            clearTimeout(timer)
        }
        timer = setTimeout(func,wait)
    }
}

2.节流
应用场景:鼠标连续点击时、监听滚动事件(是否滑到底部自动加载更多)

function throttle(func,wait) {
    let valid = true //当前函数是否处于工作状态
    return function () {
        if(!valid){//休息时间 暂不接客
            return false
        }
        // 工作时间,执行函数并且在间隔期内把状态位设为无效
        valid = false
        setTimeout(()=>{
            func()
            valid = true
        },wait)
    }
}
上一篇 下一篇

猜你喜欢

热点阅读