Function debounce

防抖函数

创建一个防抖包装器,在指定时间内多次调用时,仅执行最后一次, 可选 immediate 选项,使第一次调用立即执行。

const log = debounce(() => console.log("Executed"), 300);
window.addEventListener("resize", log); // 300ms 内重复触发时,仅最后一次执行
const logImmediate = debounce(() => console.log("Immediate Execution"), 300, true);
logImmediate(); // 立即执行一次,后续调用仍需等待 300ms
const debouncedFn = debounce(() => console.log("Will not execute"), 500);
debouncedFn();
debouncedFn.cancel(); // 取消执行
  • Type Parameters

    • T extends ((...args: any[]) => void)

      目标函数的类型

    Parameters

    • fn: T

      需要防抖处理的函数

    • delay: number

      推迟执行的等待时间(毫秒)

    • Optionalimmediate: boolean = false

      是否在第一次调用时立即执行

    Returns ((...args: Parameters<T>) => void) & {
        cancel: (() => void);
    }

    防抖后的函数,并附带 cancel 方法可手动取消防抖