防抖节流函数

本文深入探讨了前端开发中常用的节流与防抖技术,解释了这两种技术的原理及其实现方式。节流技术用于限制函数的执行频率,确保其不会过于频繁地触发;而防抖则是在一系列连续触发的事件中,仅执行最后一次触发的事件处理函数。文章还提供了具体的代码实现,并列举了实际应用场景,如图片懒加载和输入框实时查询。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

节流

原理:

避免处理函数被频繁触发,让函数每隔一段时间执行一次。党在执行周期内被触发时,不允许被执行,所以直接为函数的执行添加时间间隔就OK了。

实现:

function throttle(fn, mustRun = 500) {
	let previous = null;
	return function(...args){
		let context = this;
		let now = new Date();
		if (!previous) {
			previous = now;
		}
		let sub = now - previous;
		if (mustRun && sub >= mustRun) {
			fn.call(context, args);
			previous = now;
		}
	}
}

应用场景:

图片懒加载: 当在一个页面有很多的图片时,为了减轻服务器负担,同时能在页面迅速渲染出图片,我们选择只加载窗口可视区的图片,这时通过为滚动事件的处理函数添加节流操作即可。

防抖

原理:

当DOM事件被频繁触发时,在延期周期内,只在最后一次被触发时执行处理函数,在此之前的触发都不进行处理。通过定时器在延时周期内,清除之前的
DOM操作触发的处理函数,只执行最后一次的处理函数。

实现:

function debounce(fn, delay = 500) {
	let timer = null;
	return function (...args) {
		let context = this;
		clearTimeout(timer);
		timer = setTimer(function() {
			fn.call(context, args);
		}, delay)
	}
}

应用场景:

输入框及时查询:当输入框输入查询条件变化时,希望能够及时根据条件向后台获取查询结果。假设,一秒钟输入了十个字符就会触发十次的查询。此时,可以使用函数防抖只在最后一次输入后的N秒后执行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值