js性能優化之---防抖函數


使用場景

  • input的時時觸發搜索功能
  • scroll事件的滾動條位置的監測
  • resize事件監聽窗口變化等

舉個栗子(input框時時觸發搜索功能)

普通未防抖款

var textElement = document.getElementById('test');
var timer;
textElement.oninput = function(){
    console.log('造吧,木有防抖效果');
}

普通防抖款

var textElement = document.getElementById('test');
var timer;
textElement.oninput = function(){
    console.log('oninput事件');
    if(timer){
        clearTimeout(timer);
    }
    timer = setTimeout(function(){
        timer = null;
        console.log('添加防抖效果之后的操作')
    },2000)
}

封裝防抖款

function antishake(fn,delay){
    return function(){
        if(timer){
            clearTimeout(timer);
        }
        timer = setTimeout(function () {
            timer = null;
            fn();
        },delay);
    }
}

function business(){
    console.log('添加防抖效果之后的操作')
}

textElement.oninput = function(){
    console.log('oninput事件')
    antishake(business,800)();
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM