介绍
节流和防抖很相似,都是对不断调用的函数的次数进行限制。
不同之处在于,
节流就像是水龙头,想象一下,把水龙头扭到很小但是水滴还是一滴一滴地流下来,节流函数就是水龙头阀门,限制函数(水滴)的调用次数(滴落频率)
防抖函数像是弹簧,只要人一直压着弹簧(一直触发函数),弹簧就不会伸展(函数就不被调用),当人松开的时候(不触发函数了),弹簧就伸展开来了(函数就被调用),即如果一直触发函数,以最后一次为准。
拿页面resize做例子,假设下面这个函数被节流或函数处理过:1
2
3window.onresize = function(){
console.log('1')
}
它们的表现会是:
- 节流:设定5秒内只能触发一次函数,假设20秒内一直resize,那么控制台只能看到4个 ‘1’
- 防抖:设定倒数5秒后才触发函数resize,如果期间一直触发resize,则刷新倒数时间从头来过,直到不再触发resize,结果是控制台只能看到1个 ‘1’
代码
1 | //防抖 |
1 | //节流 |