js函数节流

场景需求:有些事件监听触发的次数太过频繁,比如scroll、resize等事件,一秒内可触发数十上百次,实际上如此频繁的事件触发是没有必要的,因为对用户来说一秒内可能100次与5次没有任何感官上的差别,因此需要对时间节流,限制事件触发的次数,能够在一定程度上优化页面,尤其是在事件中触发DOM更新的操作

话不多说上代码

//节流函数
function throttle(callback, waitTime) {
	let timer = null;
	//如果存在定时器表示当前有任务
	//因此不再执行其他操作
	return () => {
		if (timer) {
			return false;
		}else {
			timer = setTimeout(() => {
				clearTimeout(timer);
				timer = null;
				callback();
			},waitTime || 500)
		}
	}
}

//实际要执行的事件函数
function scrol() {
	console.log('scrolling');
}
//添加事件
window.onscroll = throttle(scrol, 400);

由以上可以看出通过闭包返回一个函数执行体,当前有事件执行时便不再触发新的事件操作,由此可以大大降低事件触发的频率

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值