js节流防抖

1、防抖原理:

防止频繁无效的请求,每一次的请求都会等待一定的时间,看一看有没下一次的请求,如果有就不执行上一次的请求,在重新等待一定时间,在一定的时间内没有新的请求操作,就执行请求操作。
例如:搜索功能,我们搜索hello,不应行向服务器发送5次请求,所以我们需要在一定的时间里监听用户是否还在输入,如果还在输入,我们就不向服务发送请求,如果一定的时间段内,没有输入操作,再将搜索框内的信息发送给服务器。
这也就可以减少很多不必要的请求,从而减少服务器的压力

应用场景:1、scroll时间滚动触发 2、搜索框搜索 3、表单验证 4、按钮提交事件 5、浏览器窗口缩放

代码:

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

 2、节流原理

如果连续触发一个事件,每隔一点=段时间,只触发一次。

代码:

function throttle(habder, wait) {
    let lastTime = 0;
    return function (e) {
        let nowTime = new Date().getTime();
        if (nowTime - lastTime > wait) {
           habder.apply(this, arguments);
           lastTime = nowTime;
        }
    };
}

 

posted @ 2020-12-04 11:07  (⊙o⊙)买噶  阅读(70)  评论(0编辑  收藏  举报