函数防抖和节流的结合
函数节流有个毛病,就是最后一次事件执行后,如果距离上一次事件执行不到规定时间,那么最后一次事件就不会执行,解决方法就是把事件函数节流和防抖结合在一起
function throlle(callback,delay){ let startTime=0; let timer=null; return function (){ //使用new Date().getTime(),这样首次操作一定会执行 let endTime=new Date().getTime();
//多次触发时执行clear,这样最后只会执行一次 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://my.oschina.net/u/2998098/blog/1540520