UNPKG

asp-smart-ui-plus-test

Version:

A Component Library for Vue 3

57 lines (55 loc) 1.44 kB
/** * @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) const context = this const args = arguments if (timer) clearTimeout(timer) if (immediate) { const 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 () { const context = this const args = arguments if (type === 1) { const 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) } } } }