函数节流和防抖(二)—— 节流函数

二、什么是函数节流? 1、概念:函数节流(throttle),是指在连续触发的事件中,在延迟时间内有且仅执行一次函数。节流如字面意思,会稀释函数的执行频率。

2、使用场景:

    当用户量很大时,搜索框中搜索按钮的连续点击 在规定的时间内不准点击第二次,例如用户名、手机号、邮箱输入验证功能

3、代码实现:

    setTimeout版
function throttle(fun, wait) {
          
   
	let timer;
	return function (...arguments) {
          
   
		if(timer) {
          
   
			return;
		};
		timer = setTimeout(() => {
          
   
			fun.apply(this, arguments);
			timer = null;
		}, wait);
	}
}
    时间戳版
function throttle(fun, wait) {
          
   
	let previous_time = 0;
	return function (...arguments) {
          
   
		let current_time = +new Date();
		if(current_time - previous_time > wait) {
          
   
			fun.apply(this, arguments);
			previous_time = current_time;
		}
	}
}

4、setTimeout版和时间戳版的区别就在于: setTimeout版中目标函数的触发是在wait时间结束的时候触发的,而时间戳版中目标函数的触发是在wait时间开始的时候触发的。

每一篇一个知识点,That’s all,thank you.

经验分享 程序员 微信小程序 职场和发展