aboutsummaryrefslogtreecommitdiffhomepage
path: root/server/helpers/debounce.ts
blob: 77d99a894ce9fbda77a98d5c34301efa138481e0 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
export function Debounce (config: { timeoutMS: number }) {
  let timeoutRef: NodeJS.Timeout

  return function (_target, _key, descriptor: PropertyDescriptor) {
    const original = descriptor.value

    descriptor.value = function (...args: any[]) {
      clearTimeout(timeoutRef)

      timeoutRef = setTimeout(() => {
        original.apply(this, args)

      }, config.timeoutMS)
    }
  }
}