import type { DebounceOption } from '../types'; import type { Func } from '@sdkset/types'; /** * 返回一个防抖函数,该函数会从上一次被调用后,延迟`wait`毫秒后调用给定函数。 * 给定函数调用时会传入最后一次提供给`debounced`函数的参数。 后续调用的`debounced`函数返回是最后一次给定函数调用的结果。 * 如果`wait`为`0`并且`leading`为`false`,给定函数调用将被推迟到下一个点,类似`setTimeout`为`0`的超时。 * * @method * `debounce.cancel()` * * 取消防抖函数 * * `debounce.flush()` * * 立即调用防抖函数 * * `debounce.pending()` * * 判断是否有正在执行的防抖函数 * * @example * // 避免窗口在变动时出现昂贵的计算开销 * jQuery(window).on('resize', debounce(calculateLayout, 150)) * * // 当点击时 `sendMail` 随后就被调用 * jQuery(element).on('click', debounce(sendMail, 300, { * 'leading': true, * 'trailing': false * })) * * // 确保 `batchLog` 调用1次之后,1秒内会被触发 * const debounced = debounce(batchLog, 250, { 'maxWait': 1000 }) * const source = new EventSource('/stream') * jQuery(source).on('message', debounced) * * // 取消一个 trailing 的防抖动调用 * jQuery(window).on('popstate', debounced.cancel) * * @param func 需防抖动的函数 * @param wait 需要延迟的毫秒数 * @param [options] 给定选项对象 * @param [options.maxWait] 设置 func 允许被延迟的最大值 * @param [options.leading = false] 指定在延迟开始前调用 * @param [options.trailing = true] 指定在延迟结束后调用 */ export declare function debounce(func: Func, wait: number, options?: DebounceOption): { (this: unknown, ...args: unknown[]): unknown; cancel: () => void; flush: () => unknown; pending: () => boolean; };