防抖與節(jié)流

  • 防抖:事件持續(xù)觸發(fā),但只有當(dāng)事件停止觸發(fā)后n秒才執(zhí)行函數(shù)。
  • 節(jié)流:事件持續(xù)觸發(fā)時(shí),每n秒執(zhí)行一次函數(shù)。

防抖

const debounce = function (func, delay, immediate = false) {
    let timer,
        result,
        callNow = true;
    const debounced = function () {
        const context = this;
        const args = arguments;
        if (timer) clearTimeout(timer);
        if (immediate) {
            if(callNow) result = func.apply(context, args);
            callNow = false;
            timer = setTimeout(() => {
                callNow = true; // 過(guò)n秒后才能再次觸發(fā)函數(shù)執(zhí)行。
            }, delay)
        } else {
            timer = setTimeout(() => {
                func.apply(context, args);
            }, delay)
        }
        return result;
    };
    debounced.cancel = function(){
        clearTimeout(timer);
        timer = null;
    }
}

節(jié)流

const throttle = function(func, delay) {
    let timer,
        prev = 0;
    return function(){
        const context = this;
        const args = arguments;
        const now = +new Date();
        const remaining = delay - (now - prev);
        if (remaining <= 0) {
            prev = now;
            func.apply(context, args);    
        } else if(!timer) {
            timer = setTimeout(() => {
                prev = +new Date();
                timer = null;
                func.apply(context, args);    
            }, remaining)    
        }
    }
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

  • 本篇文章主要介紹防抖和節(jié)流的原理,以及它們的區(qū)別。 防抖與節(jié)流的問(wèn)題總是會(huì)在面試中出現(xiàn)(然而我并沒(méi)有遇到),如果你...
    黑色瓶子閱讀 1,238評(píng)論 0 3
  • 本篇課題,或許早已是爛大街的解讀文章。不過(guò)春招系列面試下來(lái),不少伙伴們還是似懂非懂地栽倒在(~面試官~)深意的笑容...
    以樂(lè)之名閱讀 1,868評(píng)論 0 9
  • 在進(jìn)行窗口的resize、scroll,輸入框內(nèi)容校驗(yàn)等操作時(shí),如果事件處理函數(shù)調(diào)用的頻率無(wú)限制,會(huì)加重瀏覽器的負(fù)...
    iqing2012閱讀 900評(píng)論 0 1
  • 之前實(shí)習(xí)的時(shí)候,我遇到了這么一個(gè)需求,搜索框?qū)崟r(shí)發(fā)送請(qǐng)求,在做這個(gè)功能時(shí)我忽略了一個(gè)很嚴(yán)重的問(wèn)題,我把處理請(qǐng)求的函...
    wangmu_mu閱讀 529評(píng)論 0 1
  • 防抖和節(jié)流都是為了解決短時(shí)間內(nèi)大量觸發(fā)某函數(shù)而導(dǎo)致的性能問(wèn)題,比如觸發(fā)頻率過(guò)高導(dǎo)致的響應(yīng)速度跟不上觸發(fā)頻率,出現(xiàn)延...
    _SweetHeart閱讀 461評(píng)論 0 1

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