事件的节流和防抖

事件的节流和防抖

下面我会介绍一下这俩个事件的区别:

用途:都是用来阻止时间重复点击,造成请求不断的出发

函数防抖

定义 :防抖的定义,在一段时间内执行的某一个函数,如果这个事件没有结束,那就从新定时去执行这个事件,总而言之就是执行这个事件的最后一次的触发操作
列子:

var timer;
function  action(){
if(timer){
	clearTimeout(timer)
}
	timer=setTimeout(()=>{
		alert("要执行的事件")
	},500)
}

函数节流

定义:在某一个时间段内只会执行一次这个函数,这个事件如果在时间段内再次被调用则不会再次执行:
例子:

var timer ;
function action(){
if(timer){
	return 
}
timer=setTimeout(()=>{
clearTimeout(timer)
alert("要执行的事件")
},500)
}
### JavaScript中函数节流防抖的实现与应用场景 #### 函数节流(Throttling) 节流是指在一段时间内只允许一个函数被执行一次,即使这个时间段内多次触发了该函数。这种机制可以有效地减少高频率事件处理器的压力。 - **概念** 节流的核心在于设定一个固定的时间间隔,在这段时间内不论触发多少次目标函数都只会执行一次[^3]。 - **使用场景** 常见的应用场景包括窗口调整大小、滚动条位置变化以及拖拽操作等连续发生的DOM事件监听器上。这些情况下如果不加以控制可能会造成浏览器卡顿或者不必要的计算资源浪费[^4]。 - **实现方法** ```javascript function throttle(func, wait) { let timeout = null; return function(...args) { if (!timeout) { timeout = setTimeout(() => { func.apply(this, args); timeout = null; }, wait); } }; } ``` 此代码定义了一个`throttle`函数来创建一个新的受控版本的目标回调函数`func`,它会在指定毫秒数(`wait`)之后才真正调用原函数,并且在这段时间里忽略所有的后续请求直至计时期满为止。 #### 函数防抖(Debouncing) 防抖则是指当某个动作停止发生后的特定时间内再执行相应逻辑;如果在此期间又发生了新的相同类型的活动,则会重置定时器并等待下一轮静默期结束后再做处理。 - **概念** 当用户行为持续不断地重复时,比如快速点击按钮或是输入框内的文字录入过程,通过设置一定的延时参数使得最后一次交互完成之后经过这段预设好的时间间隔才会触发实际的任务流程[^1]。 - **使用场景** 对于表单验证、搜索建议等功能来说非常有用,因为它们通常不需要每次按键就立即响应,而是等到用户的输入稳定下来以后再去获取数据或更新界面显示[^2]。 - **实现方法** ```javascript function debounce(func, delay) { let timer; return (...args) => { clearTimeout(timer); // 清除之前的定时器 timer = setTimeout(() => { func.apply(null, args); }, delay); }; } ``` 上述实现了简单的防抖功能,每当接收到新事件就会取消前一次未到期的延迟任务,并启动新一轮倒计时,只有当整个过程中没有任何干扰因素存在的情况下才能最终激活关联的操作。 #### 如何选择防抖节流? 对于那些需要频繁响应但是并不依赖最新状态的情况可以选择采用节流策略,而对于必须基于最新的用户互动来进行下一步工作的场合则更适合运用防抖方案。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值