<body>
<div id="app" draggable="true">
可拖拽
</div>
<script>
//单位时间以内,只触发一次,如果在这个单位时间之内多次触发,最终也只会执行一次
//节流:无论你拖拽一个元素多块,事件都会没间隔一毫秒触发一次
let timer =null;
const app=document.querySelector('#app')
app.addEventListener('drag',function(e){
if(timer){
return
}
timer=setTimeout(()=>{
console.log(e.offsetX,e.offsetY);
timer=null
},500)
})
</script>
</body>
闭包封装函数节流
<div id="app" draggable="true">
可拖拽
</div>
<script>
//单位时间以内,只触发一次,如果在这个单位时间之内多次触发,最终也只会执行一次
//节流:无论你拖拽一个元素多块,事件都会没间隔一毫秒触发一次
let timer =null;
const app=document.querySelector('#app')
app.addEventListener('drag',throttle(function(e){
console.log(e.offsetX,e.offsetY);
}))
function throttle(fn,delay=500){
let timer=null;
return function(){
if(timer){
return
}
timer =setTimeout(()=>{
//arguments 是函数内部的一个对象,接受函数传递过来
console.log(arguments);
fn.apply(this,arguments);
timer=null
},delay)
}
}
</script>