throttle(节流)和debounce(防抖)的区别:
简介:
它们的原理都是延时器。
debounce可以实现防抖,但会出现一种i情况:如果一直点击,函数只会执行一次,点击不停止,函数就不会再执行,即使已经超过了设置的500毫秒时间。
而throttle是通过一个flag变量来记录当前的点击状态,第一次点击之后会执行动作,但在设置的500毫秒时间内点击不会再执行动作,直到过了500毫秒。这种方法被称为节流。
区别:
throttle和debounce在等待时间内函数都不会再执行,但throttle是从第一次触发后开始计算等待时间,而debounce在最后一次触发之后才开始计算等待时间。
用法:
- debounce主要用在防止短时间内被触发多次,比如控制一个按钮第一次发出请求后,必须等待1秒之后再点击才会发出请求,而在这期间点击按钮,相当于阻止其立即发出,重新计时等待1秒.
- throttle主要用在点击多次后不会马上执行,而是将这些执行按每个延时的时间内执行一次,点多少次执行多少次,每隔延时的时间执行一次。