最通俗易懂版“函數(shù)防抖”??學(xué)不會(huì)來打我??

2020年3月9日
《每日一題系列??》
作者:王二狗
博客:掘金思否知乎、簡書CSDN
點(diǎn)贊再看,養(yǎng)成習(xí)慣,每日一題系列會(huì)一直更新下去,你們的支持是我持續(xù)分享的最大動(dòng)力??

什么是函數(shù)防抖?

所謂函數(shù)防抖,就是說任務(wù)頻繁觸發(fā)的情況下,只有任務(wù)觸發(fā)的間隔超過指定間隔的時(shí)候,任務(wù)才會(huì)執(zhí)行.

為了更方便你的理解,這里舉一個(gè)快遞員送餐的例子。

如果快遞員在送餐的時(shí)候一次只送一單,這個(gè)時(shí)候顯然效率就會(huì)非常的低,那么為了提高效率,我們制定了這樣一個(gè)規(guī)則。

他在接到一個(gè)訂單的時(shí)候會(huì)等上5分鐘,如果在這5分鐘之內(nèi)有新的訂單,他就會(huì)再等上5分鐘。

那么什么時(shí)候不等了呢,開始去送餐呢?

就是當(dāng)他等待的時(shí)間超過了5分鐘還是沒有新的訂單,他就不等了,就開始去送餐。

下面我們用實(shí)際的代碼模擬一下這個(gè)過程:


function deliveryFood(){}

//設(shè)置定時(shí)器
var timeId = null

//點(diǎn)下按鈕之后,快遞員接到第一單
button.onclick = function(){
    //如果有新的訂單,就清除之前的定時(shí)器,再等上5分鐘
    if(timeId){
        window.clearTimeout(timeId)
    }
    timeId = setTimeout(()=>{
        //如果5分鐘之內(nèi)沒有新的訂單,就開始去送餐,并清楚定時(shí)器
        deliveryFood();
        timeId = null
    },5000)
}

告誡自己,即使再累也不要忘記學(xué)習(xí),成功沒有捷徑可走,只有一步接著一步走下去。 共勉!

文章中如有不對(duì)的地方,歡迎小伙伴們多多指正。

謝謝大家~ ??

?著作權(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),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

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