1分钟告诉你”节流“”防抖“的故事

前言

平时在浏览一些App或网页时候,经常因为网络比较慢就焦躁地狂点按钮。于是界面砰砰砰地弹窗,或连续跳转至同一个页面。碰到这类糟糕的体验,即应用的防抖、节流工作没有做好。

定义

先简单认识一下这两个方法,可直接使用lodash包的方法

throttle(cb, time, options) // 节流
debounce(cb, time, options) // 防抖

使用防抖、节流,即可控制回调方法调用的次数,避免上述场景中的问题。

除了直接使用lodash,也可以自己实现,原理比较简单,就是个定时器的控制。很多博文都有写过,不再赘述。


适用场景

相信第一次使用的同学,虽然大致了解方法的用途,但依然对两个方法有所混淆,对一些配置参数也一知半解。那么,为了更好地理解这两个方法的区别,请看下方的比喻,相信一定会对其有更感性的认识。


time

继续往下前,先明确何为连续调用:

第二个参数time,即时间区间,在该区间t内的多次触发,视为连续调用

options

配置参数中比较有用的当属leading和trailing了,控制t区间一头一尾是否调用回调函数:

leading  // 头部调用 throttle默认true, debounce默认false
trailing // 尾部调用 throttle默认true, debounce默认true

所以连续触发的话:


案例

希望本文能让你对这两个方法有进一步的认识:)