最简单的想法
点击发送时间 发现不奏效,查一下,因为flag=false,setTimeout是异步函数,外面的flag=false会先被执行,这样就无法实现限流。改一下。 let btn=document.getElementById("btn") let flag=false btn.οnclick=function(){ if(!flag){ flag=true setTimeout(()=>{ console.log(Date()) flag=false },2000) } } 这样可以实现功能,但业务逻辑console.log(Date())耦合的过于紧密,把限流函数提取出来。注意onclick绑定的是函数名。 let btn=document.getElementById("btn") let flag=false function throttle(callback,time){ if(!flag){ flag=true setTimeout(()=>{ callback() flag=false },time) } } btn.οnclick=function(){ throttle(()=>{console.log(Date())},2000) }