export function debounce<Args extends any[]>(fn: (...args: Args) => void, delay = 100) { | |
if (delay === 0) { | |
return fn; | |
} | |
let timer: number | undefined; | |
return function <U>(this: U, ...args: Args) { | |
const context = this; | |
clearTimeout(timer); | |
timer = window.setTimeout(() => { | |
fn.apply(context, args); | |
}, delay); | |
}; | |
} | |