所谓节流和防抖,其原理就是定时器,我把我的简单理解记录一下
防抖(debounce):刚开始执行一次,然后在特定时间里该方法只执行一次
场景:用户多次点击按钮
节流(throttle):刚开始不执行,只在特定时间里执行一次
场景:在输入框输入值的时候,可以减少赋值操作
防抖(这边测试是利用原生的写的,当然也可以进行封装操作,刚开始这样好理解一些)
let flag=false debounce.onclick=()=>{ if(!flag){ flag=true //做的一些事情 setTimeout(()=>{ flag=false },1000) } }
节流
var timer=null input.oninput=()=>{ clearTimeout(timer); timer = setTimeout(() => { //做的事情 }, 1000) }