面試之手寫節(jié)流函數(shù)
節(jié)流函數(shù)是干嘛的?
所謂節(jié)流,字面理解就是節(jié)省流量,但是在我們眼中應(yīng)該節(jié)約性能,可它是如何做到節(jié)約性能的?什么情況下才需要節(jié)約性能?
一,什么情況下才需要節(jié)約性能?
對(duì)某一觸發(fā)事件,在觸發(fā)事件的過程中,多次重復(fù)觸發(fā),我們要做的就是減少它觸發(fā)的次數(shù)
二,如何做到節(jié)約性能的?
它呢,在你開始觸發(fā)事件,并重復(fù)做同一動(dòng)作時(shí)(輸入框頻繁輸入),每隔一段時(shí)間(interval),就會(huì)執(zhí)行一次,直到我們停止動(dòng)作。
這樣做,相比于原來的頻繁觸發(fā),大量減少了網(wǎng)絡(luò)請(qǐng)求,減輕了服務(wù)器的壓力,對(duì)于用戶來說,體驗(yàn)也會(huì)更好。
三,如何實(shí)現(xiàn)節(jié)流?
其實(shí)很簡單,運(yùn)用高中的物理知識(shí)即可,我們劃分三個(gè)部分,上一次節(jié)點(diǎn),當(dāng)前節(jié)點(diǎn),剩余節(jié)點(diǎn),我們要做的就是利用上一次節(jié)點(diǎn),當(dāng)前節(jié)點(diǎn)和interval求出剩余節(jié)點(diǎn),再根據(jù)剩余量是否存在來決定是否調(diào)用函數(shù)。
下面有個(gè)完整版的節(jié)流函數(shù),它不僅實(shí)現(xiàn)了基本的節(jié)流,還實(shí)現(xiàn)了諸如初次請(qǐng)求的開關(guān),末尾請(qǐng)求的開關(guān),取消,回調(diào)返回值等功能!
至于用法嘛,倒是簡單,如下哈