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