防抖和節流的概念和實現方式


防抖

短時間內大量觸發同一事件,只會執行一次函數,實現原理為 設置一個定時器,約定在xx毫秒后再觸發事件處理,每次觸發事件都會重新設置計時器,直到xx毫秒內無第二次操作,防抖常用於搜索框/滾動條的監聽事件處理,如果不做防抖,每輸入一個字/滾動屏幕,都會觸發事件處理,造成性能浪費。

實現方式:
function debounce(func, wait) {
    let timeout = null
    return function() {
        let context = this
        let args = arguments
        if (timeout) clearTimeout(timeout)
        timeout = setTimeout(() => {
            func.apply(context, args)
        }, wait)
    }
}

節流:

防抖是延遲執行,而節流是間隔執行,函數節流即每隔一段時間就執行一次,實現原理為設置一個定時器,約定xx毫秒后執行事件,如果時間到了,那么執行函數並重置定時器,和防抖的區別在於,防抖每次觸發事件都重置定時器,而節流在定時器到時間后再清空定時器

實現方式:

function throttle(func, wait) {
    let timeout = null
    return function() {
        let context = this
        let args = arguments
        if (!timeout) {
            timeout = setTimeout(() => {
                timeout = null
                func.apply(context, args)
            }, wait)
        }

    }
}

 


免責聲明!

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



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