首頁我們來梳理一下概念的東西
1、什么是防抖
防抖(debounce):觸發(fā)高頻事件后 n 秒內(nèi)函數(shù)只會(huì)執(zhí)行一次,如果 n 秒內(nèi)高頻事件再次被觸發(fā),則重新計(jì)算時(shí)間
節(jié)流(thorttle):高頻事件觸發(fā),但在 n 秒內(nèi)只會(huì)執(zhí)行一次,所以節(jié)流會(huì)稀釋函數(shù)的執(zhí)行頻率
分別舉例:
防抖:1、就好像在百度搜索時(shí),每次輸入之后都有關(guān)聯(lián)的詞彈出,這個(gè)控制關(guān)聯(lián)詞的方法就不可能是輸入框內(nèi)容一改變就觸發(fā)的,他一定是當(dāng)你結(jié)束輸入一段時(shí)間之后才會(huì)觸發(fā),這時(shí)可以使用函數(shù)防抖。
2、滾動(dòng)scroll事件,不?;瑒?dòng)滾輪會(huì)連續(xù)觸發(fā)多次滾動(dòng)事件,從而調(diào)用綁定的回調(diào)函數(shù),我們希望當(dāng)我們停止?jié)L動(dòng)的時(shí),才觸發(fā)一次回調(diào),這時(shí)可以使用函數(shù)防抖。
節(jié)流:1、預(yù)定一個(gè)函數(shù)只有在大于等于執(zhí)行周期時(shí)才執(zhí)行,周期內(nèi)調(diào)用不執(zhí)行。就好像你在淘寶搶購某一件限量熱賣商品時(shí),你不斷點(diǎn)刷新點(diǎn)購買,可是總有一段時(shí)間你點(diǎn)上是沒有效果,這里就用到了節(jié)流,就是怕點(diǎn)的太快導(dǎo)致系統(tǒng)出現(xiàn)bug。
2、在項(xiàng)目中碰到的問題,移動(dòng)端通過scroll實(shí)現(xiàn)分頁,不斷滾動(dòng),我們不希望不斷發(fā)送請(qǐng)求,只有當(dāng)達(dá)到某個(gè)條件,比如,距離手機(jī)窗口底部150px才發(fā)送一個(gè)請(qǐng)求,接下來就是展示新頁面的請(qǐng)求,不停滾動(dòng),如此反復(fù)、這個(gè)時(shí)候就得用到函數(shù)節(jié)流。
2、那么他們的區(qū)別是什么呢
防抖是將多次執(zhí)行變?yōu)樽詈笠淮螆?zhí)行,節(jié)流是將多次執(zhí)行變成每隔一段時(shí)間執(zhí)行。