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ì)的地方,歡迎小伙伴們多多指正。
謝謝大家~ ??