postpass 防抖与节流 – 个人博客

防抖与节流

防抖:

防抖是指在指定时间内频繁触发事件或请求会重置定时器,待间隔一段时间后,执行一次事件或请求,例如:上公交车、百度搜索

function de(fn,delay){
    let timer = null;
    return function(){
        if(timer!=null) clearTimeout(timer);
        let ctx = this;
        timer = setTimeout(()=>{
            fn.call(ctx)
        },delay)
    }
}

function fun(){
    console.log(1);
}

let do1 = de(fun,2000); 

do1();
do1();

//1

节流:

节流就是限制一个函数在规定时间内只执行一次,例如:地铁入口、表单重复提交

function th(fn,delay){
    let bool = true;
    return function(){
        if(!bool) return;
        let ctx = this;
        bool=false;
        setTimeout(()=>{
            bool= true;
            fn.call(ctx)
        },delay)
    }
}

function fun(){
    console.log(1);
}

let do2 = th(fun,2000)

标签

发表评论