防抖:字面意思,防止抖动,规定时间内,频繁触发事件会被重置,避免事件被失误触发多次。

节流:控制流量,规定时间内,事件只会触发一次。

实现方法:每次执行前判断当前是否有延时函数等待执行,如果有,就清空。

代码实现重在清零 clearTimeout,多用于添加按钮,输入信息等需要频繁发送请求的地方。

实现方法:每次执行前会判断当前是否有等待执行的延时函数,如果有则 return

代码实现重在控制什么时候 return,多用于计算鼠标移动,下拉滚动等事件。

所谓防抖,就是高频触发事件,但是在 n 秒内只会执行一次。在此期间再次被触发,则会重新计算执行时间。

提炼:防抖就是控制次数,节流就是控制频率。需要根据业务需求来决定使用什么方法。