File size: 415 Bytes
10dbbd6
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
/**
 * A debounce function that works in both browser and Nodejs.
 * For pure Nodejs work, prefer the `Debouncer` class.
 */
export function debounce<T extends unknown[]>(
	callback: (...rest: T) => unknown,
	limit: number
): (...rest: T) => void {
	let timer: ReturnType<typeof setTimeout>;

	return function (...rest) {
		clearTimeout(timer);
		timer = setTimeout(() => {
			callback(...rest);
		}, limit);
	};
}