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