函数防抖和节流的结合

函数节流有个毛病,就是最后一次事件执行后,如果距离上一次事件执行不到规定时间,那么最后一次事件就不会执行,解决方法就是把事件函数节流和防抖结合在一起

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://www.cnblogs.com/liuXiaoDi/p/12593522.html