帮我写一个ts的防抖函数

帮我写一个ts的防抖函数
用户986184975
2025年03月04日
|
浏览 107
前端

TypeScript
复制

复制代码
function debounce<F extends (...args: any[]) => void>(func: F, wait: number): F {
  let timeout: ReturnType<typeof setTimeout> | null;
  return function(this: ThisParameterType<F>, ...args: Parameters<F>) {
    const context = this;
    if (timeout !== null) clearTimeout(timeout);
    timeout = setTimeout(() => func.apply(context, args), wait);
  } as F;
}

关键技术说明:

  1. 使用闭包保存 timeout 变量,以便在每次调用时清除之前的定时器。
  2. 通过 setTimeout 设置一个新的延迟执行时间。
  3. 确保函数上下文和参数正确传递给原始函数。
我要提问
复制内容
分享给好友
AI编程问答网 免责声明:
以上内容除特别注明外均来源于网友提问,AI编程问答网回答,权益归原著者所有;
 
下一篇:你好