| New file | 
|  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * @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) | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|