¶Ô±ÈÐÂÎļþ |
| | |
| | | /** |
| | | * @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) |
| | | } |
| | | } |
| | | } |
| | | } |