UNPKG

361 BJavaScriptView Raw
1// @flow strict-local
2
3export default function debounce<TArgs: Array<mixed>>(
4 fn: (...args: TArgs) => mixed,
5 delay: number,
6): (...args: TArgs) => void {
7 let timeout;
8
9 return function(...args: TArgs) {
10 if (timeout) {
11 clearTimeout(timeout);
12 }
13
14 timeout = setTimeout(() => {
15 timeout = null;
16 fn(...args);
17 }, delay);
18 };
19}