防抖
對于短時間內(nèi)連續(xù)觸發(fā)的事件(例如滾動事件),防抖的含義就是讓某個時間期限(如1000毫秒)內(nèi),事件處理函數(shù)只執(zhí)行一次
在第一次觸發(fā)事件時,不立即執(zhí)行函數(shù),而是給出一個期限值比如200ms,然后:
如果在200ms內(nèi)沒有再次觸發(fā)滾動事件,那么就執(zhí)行函數(shù)
如果在200ms內(nèi)再次觸發(fā)滾動事件,那么當(dāng)前的計時取消,重新開始計時
效果:如果短時間內(nèi)大量觸發(fā)同一事件,只會執(zhí)行一次函數(shù)。
實現(xiàn):setTimeout , 閉包
節(jié)流
我們可以設(shè)計一種定期開放的函數(shù),也就是讓函數(shù)執(zhí)行一次后,在某個時間段內(nèi)暫時失效,過了這段時間后再重新激活。
效果:如果短時間內(nèi)大量觸發(fā)同一事件,那么在函數(shù)執(zhí)行一次之后,該函數(shù)在指定的時間期限內(nèi)不再工作,直至過了這段時間才重新生效。
實現(xiàn):setTimeout