防抖与节流
防抖
防抖策略
(
debounce
)是当事件被触发后,延迟n
秒后再执行回调,如果在这n
秒内事件又被触发,则重新计时。
应用场景
用户在输入框中连续输入一串字符时,可以通过防抖策略,只在输入完后,才执行查询的请求,这样可以有效减少请求次数,节约请求资源;
节流
节流策略
(
throttle
),顾名思义,可以减少一段时间内事件的触发频率。
应用场景 :
-
① 鼠标连续不断地触发某事件(如点击),只在单位时间内只触发一次;
-
② 懒加载时要监听计算滚动条的位置,但不必每次滑动都触发,可以降低计算的频率,而不必去浪费 CPU 资源;
区别
- 防抖:如果事件被频繁触发,防抖能保证只有最有一次触发生效!前面 N 多次的触发都会被忽略!
- 节流:如果事件被频繁触发,节流能够减少事件触发的频率,因此,节流是有选择性地执行一部分事件!