转:https://juejin.cn/post/6844903760334946312#heading-5
debounce
有一个等待时长,如果在这个等待时长内,再次调用了函数,就取消上一个定时器,并新建一个定时器。所以 debounce
适用于 input
, keyup
, keydown
等事件, 亦或者 click
事件需要防止用户在某个时间范围内多次点击的时候,也可以用。注:在lodash
的实现中 中并没有取消新建
定时器的做法,是用时间来判断的。throttle
也有一个等待时长,每隔一段这个等待时长,函数必须执行一次。如果在这个等待时长内,当前延迟执行没有完成,它会忽略接下来调用该函数的请求,不会去取消上一个定时器。所以 throttle
适用于 scroll
, mousemove
等事件。在lodash
的实现中,还有一个等待的最大时长,这个我们分析源码时再讨论。