手写节流throttle
拖拽一个元素时,要随时拿到该元素被拖拽带的位置
直接用drag事件,则会频繁触发,很容易导致卡顿
节流:无论拖拽速度多快,都会每100ms触发一次
const div1 = document.getElementById('div1');
let timer = null
div1.addEventListener('drag',function(e){
if(timer){
return
}
timer =setTimeout(()=>{
console.log(e.offsetX,e.offsetY)
timer=null
},100)
})
节流
function throttle(fn,delay=100){
let timer = null;
return function(){
if(timer){
return
}
timer = setTimeout(()=>{
fn.apply(this,arguments)
timer=null
},delay)
}
}
div1.addEventListener('drag',throttle(function(e){
console.log(e.offsetX,e.offsetY)
},200))