函数节流有个毛病,就是最后一次事件执行后,如果距离上一次事件执行不到规定时间,那么最后一次事件就不会执行,解决方法就是把事件函数节流和防抖结合在一起
function throlle(callback,delay){ let startTime=0; let timer=null; return function (){ //使用new Date().getTime(),这样首次操作一定会执行 let endTime=new Date().getTime(); clearTimeout(timer); //第一次减法一定大雨delay,确保首次操作一定会执行 if(endTime-startTime>delay){ callback() startTime=new Date().getTime(); }else{ //这里的目的是让最后一次执行 timer=setTimeout(()=>{ callback() },delay) } } } document.getElementById('box').addEventListener('click',throlle(()=>{ console.log(11); },1000))
来源:https://www.cnblogs.com/liuXiaoDi/p/12593522.html