办学质量监测教学评价系统
shenrongliang
2025-06-13 11d86cc6c26bb4f709e407acadf4805c2024e79f
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
type CallbackFunc<T extends unknown[]> = (...args: T) => void
 
export function debounce<T extends unknown[]>(
  func: CallbackFunc<T>,
  wait: number,
): (...args: T) => void {
  let timeoutId: ReturnType<typeof setTimeout> | undefined
 
  return (...args: T) => {
    const later = () => {
      clearTimeout(timeoutId)
      func(...args)
    }
 
    clearTimeout(timeoutId)
    timeoutId = setTimeout(later, wait)
  }
}