js中的防抖和节流

89 阅读1分钟

1、防抖 (debounce)

防抖的作用是:当用户多次触发回调函数时,只触发最后一次操作的,其余的全部忽略掉。 在第一次触发事件时,不立即执行函数,而是给出一个期限值比如200ms

  • 如果在200ms内没有再次触发滚动事件,那么就执行函数
  • 如果在200ms内再次触发滚动事件,那么当前的及时取消,重新开始计时

效果:

     如果短时间内大量触发同一事件,只会执行一次函数

应用场景:

     防抖 debounce 多用于 '延迟多久后触发' 

![58ODX~[_3}@FM5X0G}3MYA.png

2、节流 (throttle)

但是如果产品同学的期望处理方案是:即使用户不断拖动滚动条,也能在某个时间间隔之后给出反馈呢? 答:----->节流

节流的作用:

    规定一个单位时间内,只能触发一次函数。如果这个函数单位时间内触发多次函数,只有一次生效。
  • 其实很简单:

我们可以设计一种类似控制阀门一样定期开放的函数,也就是让函数执行一次后,在某个事件内短暂失效,过了这段时间后再重新激活。(类似技能冷却)

应用场景:

     节流 throttle多用于 "多久触发一次"

`

</script>
`