simple-lazy-debounce
Version:
Lazy delay support debounce function
30 lines (29 loc) • 720 B
JavaScript
const u = (r, c) => {
const o = {
// 'let' 대신 'const' 사용
defaultDelay: 300,
maxDelay: 500,
latencyIncrement: 100,
...c
};
for (const n in o) {
const t = o[n];
if (!Number.isInteger(t) || t !== void 0 && t < 0)
throw new Error(
`Invalid option value for key '${n}': ${t}. It must be a non-negative integer.`
);
}
const { defaultDelay: a, maxDelay: m, latencyIncrement: s } = o;
let e = a ?? 300, l = 0, i;
return (...n) => {
Date.now() - l > e ? e = Math.min(
e + (s ?? 100),
m ?? 500
) : e = a ?? 300, clearTimeout(i), i = setTimeout(() => {
r(...n), l = Date.now();
}, e);
};
};
export {
u as SimpleLazyDebounce
};