相同点:
节流与防抖都是作为页面性能优化的策略,为了限制函数的执行频率,节省计算资源,优化函数因触发过多响应速度跟不上页面出现的堵塞卡顿现象。
不同点:
节流(throttle):
当事件第一次触发的时候,也是不立即执行函数,而是给出一个期限值,比如200ms,开始计时,然后:
- 在200ms内,再次触发的事件被全部忽略,计时结束后,执行一次函数,并且清理计时器。
- 200ms结束后,重新开始上述循环
效果:如果短时间内大量触发同一事件,那么在函数执行一次之后,该函数在指定的时间期限内不再工作,直至过了这段时间才重新生效。
防抖(debounce):
当事件第一次触发的时候,不立即执行函数,而是给出一个期限值,比如200ms,然后:
- 如果在200ms内,事件再次触发,当前的计时取消,重新开始计时
- 如果在200ms内,事件没有触发,那么执行事件的处理函数
效果:指定时间内连续触发事件,只在最后一次事件触发结束后的指定时间之后,执行一次处理函数。