debounce
有两种防抖模式:
- 延迟执行
- 立即执行
应用场景
- 输入搜索 - 延迟执行
- 点击按钮搜索 - 立即执行
输入搜索
输入框中实时键入文本搜索,适合延迟执行。用户在输入完整的搜索内容后,会停止一段时间,这时候发起搜索行为。
需求:
- 监听到用户开始输入后,并不马上执行,等一段时间后再执行
- 等待时间中,有新的输入事件,重置计时器
1 | /** |
点击搜索
用户点击搜索按钮,立即执行搜索,并启动定时器,一段时间后清除定时器。一段时间内多次点击,只执行一次,忽略后面的行为,并重置定时器。
需求
1 | /** |
节流
频繁触发的事件,事件处理函数在一定的时间间隔内只执行一次。
1 | /** |
总结
节流和防抖类似,都能有效优化系统性能,不过使用业务场景有所区别:
- 防抖既可用于在多次触发的事件(如文本框输入),也可用于频繁触发的事件(如滚动条)
- 节流只用在频繁触发的事件上