You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							31 lines
						
					
					
						
							810 B
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							31 lines
						
					
					
						
							810 B
						
					
					
				
								let timer;
							 | 
						|
								let flag;
							 | 
						|
								/**
							 | 
						|
								 * 节流原理:在一定时间内,只能触发一次
							 | 
						|
								 *
							 | 
						|
								 * @param {Function} func 要执行的回调函数
							 | 
						|
								 * @param {Number} wait 延时的时间
							 | 
						|
								 * @param {Boolean} immediate 是否立即执行
							 | 
						|
								 * @return null
							 | 
						|
								 */
							 | 
						|
								function throttle(func, wait = 500, immediate = true) {
							 | 
						|
								  if (immediate) {
							 | 
						|
								    if (!flag) {
							 | 
						|
								      flag = true;
							 | 
						|
								      // 如果是立即执行,则在wait毫秒内开始时执行
							 | 
						|
								      typeof func === 'function' && func();
							 | 
						|
								      timer = setTimeout(() => {
							 | 
						|
								        flag = false;
							 | 
						|
								      }, wait);
							 | 
						|
								    } else {
							 | 
						|
								    }
							 | 
						|
								  } else if (!flag) {
							 | 
						|
								    flag = true;
							 | 
						|
								    // 如果是非立即执行,则在wait毫秒内的结束处执行
							 | 
						|
								    timer = setTimeout(() => {
							 | 
						|
								      flag = false;
							 | 
						|
								      typeof func === 'function' && func();
							 | 
						|
								    }, wait);
							 | 
						|
								  }
							 | 
						|
								}
							 | 
						|
								export default throttle;
							 |