防抖
對(duì)于短時(shí)間內(nèi)連續(xù)觸發(fā)的事件(例如滾動(dòng)事件),防抖的含義就是讓某個(gè)時(shí)間期限(如1000毫秒)內(nèi),事件處理函數(shù)只執(zhí)行一次
在第一次觸發(fā)事件時(shí),不立即執(zhí)行函數(shù)天吓,而是給出一個(gè)期限值比如200ms,然后:
如果在200ms內(nè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í)失效拂封,過了這段時(shí)間后再重新激活茬射。
效果:如果短時(shí)間內(nèi)大量觸發(fā)同一事件,那么在函數(shù)執(zhí)行一次之后冒签,該函數(shù)在指定的時(shí)間期限內(nèi)不再工作在抛,直至過了這段時(shí)間才重新生效。
實(shí)現(xiàn):setTimeout