当前位置: 首页 > Web前端 > HTML5

节流和防抖(二)

时间:2023-04-05 17:48:15 HTML5

点击<脚本>varbtn=document.getElementById("btn");/***handle最终需要执行的事件监听器*wait事件触发后多久开始执行*immediate控制第一次或最后一次执行,false执行最后一次*/functionmyDebounce(handle,wait,immediate){//参数类型判断和默认值处理if(typeofhandle!=="function"){thrownewError("handlemustbeafunction");}if(typeofwait==="undefined"){wait=300;}if(typeofwait==="boolean"){立即数e=等待;等待=300;}让计时器=null;returnfunctionproxy(...args){让self=this;init=immediate&&!timer;清除超时(计时器);timer=setTimeout(()=>{timer=null;!immediate?handle.call(self,...args):null;},wait);//如果当前传入的是true,说明我们需要立即执行//如果只想执行第一个执行过,可以加上timer为null作为判断//因为只要timer为Null,就是说没有第二次点击init?handle.call(self,...args):null;};}functionbtnClick(ev){console.log("btnclick....",ev.type);}btn.onclick=myDebounce(btnClick,200);