办学质量监测教学评价系统
康鲁杰
昨天 0ab0a02b5dff72e9048218460bd3f3a821c9e031
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)
  }
}