- 将事件延迟执行
- 如果在这段事件事件被再次触发,则取消执行之前的事件
// 将事件延迟执行,如果在这段时间内事件再次被触发,则取消执行之前的事件
interface IDebounceFn<T> {
(...args: T[]): void | Promise<void>
}
export function useDebounce<T>(fn: IDebounceFn<T>, delay: number) {
let timer: number | null = null
return function f(this: void, ...arg: T[]) {
if (timer) {
clearTimeout(timer)
}
timer = setTimeout(() => {
fn.call(this, ...arg)
}, delay)
}
}
写一个延迟函数,在需要的import使用