防抖和节流

本文介绍了前端开发中防止频繁触发事件的两种策略:防抖和节流。防抖技术常用于输入框远程搜索,确保在连续输入时只发送最后一次请求,避免过多请求。节流则应用于类似王者荣耀技能释放的场景,保证同一时间内只执行一次操作。文中提供了防抖和节流的实现代码,并总结了它们的异同点。
摘要由CSDN通过智能技术生成

前端开发中常见的防抖和节流

防抖和节流

防抖和节流是前端开发工作中经常会出现的场景。防抖是指一些高频事件被多次触发后,只响应最后一次被触发的事件。如常见的输入框的远程搜索功能,当用户持续不断的输入需要远程搜索的内容时,如果每输入一次就触发一次远程搜索,会发送多个不必要的请求,更有甚者前面发的请求后返回而覆盖后面请求先返回的数据,导致搜索的内容有出入,因此,必须使用防抖解决。而节流是指高频触发事件被多次触发,只响应第一次触发的事件,后面继续触发的事件必须等到第一次事件触发结束后才会继续响应。如王者荣耀中释放一次技能后就不能再继续释放技能,此处也使用了截流。

防抖实现

cost debounce = (fun, delay) => {
	const timer = null;
	return () => {
		clearTimeout(timer);
		timer = setTimeout(() => {
			fun.call(this, arguments);
			clearTimeout(timer);
		}, delay)
	}
}

节流实现

const throttle = (fun, delay) => {
	let timer = null;
	return () => {
		if (timer) {
			return;
		}
		timer = setTimeout(() => {
			fun.call(this, arguments);
			clearTimeout(timer);
		}, delay)
	}
}

总结:

(1)相同点:防抖和接流都是应用在高频事件场景中,避免事件被高频触发导致系统出现性能问题或是产生bug;两者都可以采用闭包存储一个定时器timer,通过定时器状态判断是否继续响应高频事件。
(2)不同点:防抖只响应高频触发事件最后一次被触发的事件,截流只响应高频触发事件被第一次被触发的事件。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值