防抖和節(jié)流 及其實現(xiàn)

防抖函數(shù)

你盡管觸發(fā)事件,但是我一定在事件觸發(fā) n 秒后才執(zhí)行,如果你在一個事件觸發(fā)的 n 秒內(nèi)又觸發(fā)了這個事件,那我就以新的事件的時間為準(zhǔn),n 秒后才執(zhí)行,總之,就是要等你觸發(fā)完事件 n 秒內(nèi)不再觸發(fā)事件,我才執(zhí)行

實現(xiàn)

function debounce(fn){
    let timeout = null;
    return function(){
          clearTimeOut(timeout)
          setTimeOut(() =>{
                fn.apply(this,arguments)
          },500)
    }
}

節(jié)流函數(shù)

防抖動和節(jié)流是不一樣的.本質(zhì)上,防抖動是將多次執(zhí)行變成最后一次執(zhí)行.節(jié)流是將多次執(zhí)行變成每隔多久執(zhí)行一次.減少函數(shù)執(zhí)行頻率.

實現(xiàn)

function throttle(fn){
    let canRun = true;
    return function(){
          if(!canRun) return;
          canRun = false;
          setTimeOut(() => {
                fn.apply(this,argument)
                canRun = true;
          },500)
    }
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容