防抖和节流本质是不一样的。防抖是将多次执行变为最后一次执行,节流是将多次执行变成每隔一段时间执行。
防抖(debounce):
防抖触发高频率事件时n秒后只会执行一次,如果n秒内再次触发,则会重新计算。
概述:每次触发时都会取消之前的延时调用。
节流(thorttle):
高频事件触发,每次触发事件时设置一个延迟调用方法,并且取消之前的延时调用方法。
概述:每次触发事件时都会判断是否等待执行的延时函数。降低回调执行频率,节省计算资源
PS:函数防抖和函数节流都是防止某一时间频繁触发
函数防抖一定时间连续触发的事件,只在最后执行一次,而函数节流一段时间内只执行一次。防抖在频繁操作过程中会清楚上次的执行时间重新进行计算,从而只执行一次,类似于人进入电梯时电梯关门时间的处理
简单来说:你对事件3秒内执行10次的话,防抖是3秒结束后执行最后一次事件,而节流的话,假如指定节流时间1秒,那就是3秒你点了10次也只会执行3次。
效果不一样,看需求选择吧。一般鼠标多次点击按钮进行操作,输入框频繁搜索内容等条件下,为节省资源使用节流。用防抖,(单位时间内只触发一次)。滚动加载请求数据,window触发resize的时候,使用防抖函数可以让其只在最后触发一次。用节流