防抖
js的防抖就是比如一个水龙头坏了一直在滴水,我们为了节约用水,那么我们会想办法让他不再滴的那么快,这就是防抖。
常见的比如scroll,onresize这些高频触发的情况。
这就是一个防抖函数利用闭包让作用域链的变量得以保存,每次获取结束时间与初始时间之差,如果大于我们设定的值就进行触发一次函数,然后设置初始时间为结束时间.
节流
节流就是比如关闭了水龙头后的最后水龙头还要再来一滴。也就是只在最后执行一次。
主要利用了setTimeout来实现,滚动的过程中我们一直清楚定时器,只在最后停止滚动的时候触发一次
防抖加节流
那我们来组合一下:
这就是一个防抖加节流的结合体。