每當(dāng)監(jiān)聽input輸入或者頁(yè)面的onscroll,鼠標(biāo)的onmouseover這些事件的頻率非常高,但是如果我們?cè)谙蚝笈_(tái)發(fā)送數(shù)據(jù)時(shí)并不需要如此高的頻率,畢竟瀏覽器的性能是有限,所有我們要加以優(yōu)化
防抖:如果事件被頻繁觸發(fā),防抖能保證只有最有一次觸發(fā)生效!前面 N 多次的觸發(fā)都會(huì)被忽略!
節(jié)流:如果事件被頻繁觸發(fā),節(jié)流能夠減少事件觸發(fā)的頻率,因此,節(jié)流是有選擇性地執(zhí)行一部分事件!
防抖(debounce)
是當(dāng)事件被觸發(fā)后,延遲 n 秒后再執(zhí)行回調(diào),如果在這 n 秒內(nèi)事件又被觸發(fā),則重新計(jì)時(shí)。
好處:能夠保證用戶在頻繁觸發(fā)某些事件的時(shí)候,不會(huì)頻繁的執(zhí)行回調(diào),只會(huì)被執(zhí)行一次
使用場(chǎng)景:用戶在輸入框中連續(xù)輸入一串字符時(shí),可以通過防抖策略,只在輸入完后,才執(zhí)行查詢的請(qǐng)求,這樣可以有效減少請(qǐng)求次數(shù),節(jié)約請(qǐng)求資源

定義個(gè)盒子

自定義防抖函數(shù)
節(jié)流( throttle )
可以減少一段時(shí)間內(nèi)事件的觸發(fā)頻率 ,即當(dāng)前函數(shù)沒有執(zhí)行完,不會(huì)進(jìn)行后面的
使用場(chǎng)景:鼠標(biāo)連續(xù)不斷地觸發(fā)某事件,懶加載時(shí)要監(jiān)聽計(jì)算滾動(dòng)條的位置

自定義節(jié)流函數(shù)