@fbltd/async
Version:
Miscellaneous async utils
17 lines (16 loc) • 418 B
JavaScript
export function debounce(fn, ms = 0) {
let id;
function cancelPrevious() {
id !== void 0 && clearTimeout(id);
}
ms = Math.max(ms, 0);
const functionToReturn = ((...args) => {
cancelPrevious?.();
id = setTimeout(() => {
fn(...args);
id = undefined;
}, ms);
});
functionToReturn.dispose = cancelPrevious;
return functionToReturn;
}