1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
  | let timer, 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 { 
 |          if (!flag) { 
 |              flag = true 
 |              // 如果是非立即执行,则在wait毫秒内的结束处执行 
 |              timer = setTimeout(() => { 
 |                  flag = false 
 |                  typeof func === 'function' && func(); 
 |              }, wait); 
 |          } 
 |           
 |      } 
 |  }; 
 |  export default throttle 
 |  
  |