| 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 | 
 |