函数防抖 和 函数节流

简介: 函数防抖 和 函数节流

函数防抖 和 函数节流
函数防抖(debounce)
概念
函数防抖 就是指 触发事件后 在 n 秒内 函数只能执行一次,如果在 n 秒内又触发了事件,则会重新计算函数执行时间。
简单的说,当一个动作连续触发,则只执行最后一次。

生活中的实例: 如果有人进电梯(触发事件),那电梯将在10秒钟后出发(执行事件监听器),这时如果又有人进电梯了(在10秒内再次触发该事件),我们又得等10秒再出发(重新计时)。

坐公交,司机需要等最后一个人进入才能关门。每次进入一个人,司机就会多等待几秒再关门

将一个弹簧按下,继续加压,继续按下,只会在最后放手的一瞬反弹。即我们希望函数只会调用一次,即使在这之前反复调用它,最终也只会调用一次而已。

函数防抖 应用场景

给按钮加函数防抖防止表单多次提交。
对于输入框连续输入进行AJAX验证时,用函数防抖能有效减少请求次数。
判断scroll是否滑到底部,滚动事件+函数防抖
手机号、邮箱验证输入检测
窗口大小Resize。只需窗口调整完成后,计算窗口大小。防止重复渲染
总的来说,适合多次事件一次响应的情况,也就是连续的事件,只需触发一次回调。

函数节流(throttle)
概念
限制一个函数在一定时间内只能执行一次。
也就是 规定一个单位时间,在这个单位时间内,只能有一次触发事件的回调函数执行,如果在同一个单位时间内某事件被触发多次,只有一次能生效。

实例:
一个水龙头在滴水,可能一次性会滴很多滴,但是我们只希望它每隔 500ms 滴一滴水,保持这个频率。即我们希望函数在以一个可以接受的频率重复调用。
我们分析上图你会发现:
竖线的疏密代表事件执行的频繁程度。可以看到,正常情况下,竖线非常密集,函数执行的很频繁。而debounce(函数防抖)则很稀疏,只有当鼠标停止移动时才会执行一次。throttle(函数节流)分布的较为均已,每过一段时间就会执行一次。

函数节流 应用场景

间隔一段时间执行一次回调的场景有:

滚动加载,加载更多或滚到底部监听
谷歌搜索框,搜索联想功能
高频点击提交,表单重复提交
游戏中的刷新率
DOM元素拖拽
Canvas画笔功能
总的来说,适合大量事件按时间做平均分配触发
————————————————
版权声明:本文为CSDN博主「祥子的小迷妹」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_46034375/article/details/106986652

相关文章
节流函数和防抖函数的区别和应用
节流函数和防抖函数的区别和应用
40 0
|
6月前
|
UED
函数防抖
在频繁触发的情况下,只有足够的空闲时间,才执行代码一次,如果没有执行完就清除掉,重新执行逻辑。简单来说,当触发后再次触发,会取消上一次触发的执行,直到最后一次触发后过去设定时间后才执行。
52 5
|
6月前
节流、防抖
节流、防抖
44 2
|
6月前
|
算法 前端开发
2627. 函数防抖
2627. 函数防抖
45 0
什么是防抖和节流,怎么实现一个防抖和节流?
功能:当事件被触发N秒之后再执行回调,如果在N秒内被触发,则重新计时。
面试官:防抖和节流的区别是啥?实现一个防抖和节流函数(一)
面试官:防抖和节流的区别是啥?实现一个防抖和节流函数(一)
|
JavaScript
原生js实现一个节流函数和防抖函数?
原生js实现一个节流函数和防抖函数?
72 0
|
JavaScript
如何通过原生js实现一个节流函数和防抖函数?
如何通过原生js实现一个节流函数和防抖函数?
|
前端开发
什么是防抖和节流?有什么区别?
什么是防抖和节流?有什么区别?
81 0