¶Ô±ÈÐÂÎļþ |
| | |
| | | let timeout = null |
| | | |
| | | /** |
| | | * 鲿åçï¼ä¸å®æ¶é´å
ï¼åªææå䏿¬¡æä½ï¼åè¿wait毫ç§åææ§è¡å½æ° |
| | | * |
| | | * @param {Function} func è¦æ§è¡çåè°å½æ° |
| | | * @param {Number} wait å»¶æ¶çæ¶é´ |
| | | * @param {Boolean} immediate æ¯å¦ç«å³æ§è¡ |
| | | * @return null |
| | | */ |
| | | function debounce(func, wait = 500, immediate = false) { |
| | | // æ¸
é¤å®æ¶å¨ |
| | | if (timeout !== null) clearTimeout(timeout) |
| | | // ç«å³æ§è¡ï¼æ¤ç±»æ
åµä¸è¬ç¨ä¸å° |
| | | if (immediate) { |
| | | const callNow = !timeout |
| | | timeout = setTimeout(() => { |
| | | timeout = null |
| | | }, wait) |
| | | if (callNow) typeof func === 'function' && func() |
| | | } else { |
| | | // è®¾ç½®å®æ¶å¨ï¼å½æå䏿¬¡æä½åï¼timeoutä¸ä¼å被æ¸
é¤ï¼æä»¥å¨å»¶æ¶wait毫ç§åæ§è¡funcåè°æ¹æ³ |
| | | timeout = setTimeout(() => { |
| | | typeof func === 'function' && func() |
| | | }, wait) |
| | | } |
| | | } |
| | | |
| | | export default debounce |