varthrottle=function(func,delay){ varprev=Date.now(); returnfunction(){ varcontext=this; varargs=arguments; varnow=Date.now(); if(now-prev>=delay){ func.apply(context,args); prev=Date.now(); } }}functionhandle(){ console.log(Math.random());}window.addEventListener('scroll',throttle(handle,1000));兩個(gè)date.now()是怎么運(yùn)行的原理是什么
2 回答

楊__羊羊
TA貢獻(xiàn)1943條經(jīng)驗(yàn) 獲得超7個(gè)贊
先用閉包的方式在注冊(cè)的時(shí)候初始化了一個(gè)時(shí)間戳作為節(jié)流計(jì)時(shí)的開始,每次節(jié)流函數(shù)執(zhí)行的時(shí)候判斷當(dāng)前時(shí)間和節(jié)流開始的時(shí)間差如果大于等于預(yù)計(jì)時(shí)間(delay)就把節(jié)流開始計(jì)時(shí)的時(shí)間更新一下,以當(dāng)前時(shí)間節(jié)點(diǎn)為下一個(gè)節(jié)流的開始時(shí)間。這樣就保證了每一段時(shí)間執(zhí)行一次