第二十二天易忘知识点-JS

day22

防抖

事件被频繁触发,在规定的时间内一直触发函数,会重新计算时间,直到达到时间,函数才会执行最后一次执行函数的最后一次代码

var input = document.querySelector('input');
input.oninput = debounce(function(){
    console.log(this.value)
},1000);
function debounce(fun,wait){
    let timer = null;
    return function(){
        if(timer!=null){
            clearTimeout(timer)
        }
        var that = this;
        timer = setTimeout(function(){
            fun.call(that)
        },wait)
    }
}

节流

每隔一段时间函数只会执行一次,限制事件执行的频率

window.onscroll = throttle(function(){
    alert('我被调用了')
},2000)
function throttle(fun,wait){
// 定义一个变量控制定时器执行的频率
    let id;
    return function(){
        if(!id){
            id = setTimeout(function(){
                fun();
                // 为了持续等待wait事件执行定时器一次
                id = null;
            },wait);
        }
        // 限制事件执行频率
    }
}
点赞

发表回复

电子邮件地址不会被公开。必填项已用 * 标注