函数的防抖和节流
每次上来一个函数真心看不懂,看着就害怕,总是区分不清楚防抖和节流的概念以及使用场景,所以这次倒着聊聊。
先举个栗子聊一下防抖和节流是什么形式? 我的理解是,防抖相当于乘坐电梯,(在未超重的情况下)每进来一个人,为了安全起见要等10秒后关门运行,若这十秒之内,又进来一个新人,那就重新计时10秒;而节流就相当于乘坐地铁,规定好每次停车时长为5分钟, 为了准时到达,每隔5分钟必须关门行驶,无论乘坐电梯还是地铁,都是在保证在一段时间内,有规律的控制运行,在保证正常运行的情况下,设置一定是时间是为了高效的节约资源。
以上是生活中的例子,那么在项目里,防抖和节流的使用场景是什么呢?
防抖场景:1. search搜索时,设置防抖来节约请求资源。
2. window触发resize的时候,不断的调整浏览器窗口大小会不断的触发这个事件,用防抖来让其只触发一次
节流场景:1. 鼠标不断点击触发,mousedown(单位时间内只触发一次)
2. 监听滚动事件,比如是否滑到底部自动加载更多,用throttle来判断