1.什么是防抖
防抖策略(debounce
)是当事件被触发后,延迟 n
秒后再执行回调,如果在这 n
秒内事件又被触发,则重新计时。无论触发多少次只执行一次
例如:搜索框
如果用户每敲一个字就发一次请求,那会浪费不必要的流量.
这时就可以用到防抖了,原理很简单 定时器
利用定时器延时500毫秒在发请求,当用户在这段时间内再次输入文字,就清除上个定时器即可
可以看到只执行了一次.
---------------------------------------------------
2.节流
节流策略(throttle
),顾名思义,可以减少一段时间内事件的触发频率
在某段时间内 只触发一次
例如:鼠标连续触发某事件,如(点击)
不必每次点击都触发,可以降低计算的频率,而不必去浪费 CPU 资源.,那就用节流吧
1.当点击的时候,判断是否有定时器,有的话那就是上个定时器正在执行,所以return
2.当请求发送之后,立即清空timer,方便开启下个定时器.
节流相对防抖要稍微难理解一点点.
总结:
-
防抖:如果事件被频繁触发,防抖能保证只有最有一次触发生效!前面 N 多次的触发都会被忽略!
-
节流:如果事件被频繁触发,节流能够减少事件触发的频率,因此,节流是有选择性地执行一部分事件!(某段时间只触发一次)