| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 | 
							- /**
 
-  * @desc 函数防抖
 
-  * @param func 目标函数
 
-  * @param wait 延迟执行毫秒数
 
-  * @param immediate true - 立即执行, false - 延迟执行
 
-  */
 
- export const debounce = function(func, wait = 1000, immediate = true) {
 
- 	let timer;
 
- 	console.log(1);
 
- 	return function() {
 
- 		console.log(123);
 
- 		let context = this,
 
- 			args = arguments;
 
- 		if (timer) clearTimeout(timer);
 
- 		if (immediate) {
 
- 			let callNow = !timer;
 
- 			timer = setTimeout(() => {
 
- 				timer = null;
 
- 			}, wait);
 
- 			if (callNow) func.apply(context, args);
 
- 		} else {
 
- 			timer = setTimeout(() => {
 
- 				func.apply(context, args);
 
- 			}, wait)
 
- 		}
 
- 	}
 
- }
 
- /**
 
-  * @desc 函数节流
 
-  * @param func 函数
 
-  * @param wait 延迟执行毫秒数
 
-  * @param type 1 使用表时间戳,在时间段开始的时候触发 2 使用表定时器,在时间段结束的时候触发
 
-  */
 
- export const throttle = (func, wait = 1000, type = 1) => {
 
- 	let previous = 0;
 
- 	let timeout;
 
- 	return function() {
 
- 		let context = this;
 
- 		let args = arguments;
 
- 		if (type === 1) {
 
- 			let now = Date.now();
 
- 			if (now - previous > wait) {
 
- 				func.apply(context, args);
 
- 				previous = now;
 
- 			}
 
- 		} else if (type === 2) {
 
- 			if (!timeout) {
 
- 				timeout = setTimeout(() => {
 
- 					timeout = null;
 
- 					func.apply(context, args)
 
- 				}, wait)
 
- 			}
 
- 		}
 
- 	}
 
- }
 
 
  |