webdev-power-kit
Version:
A powerful toolkit that simplifies access to browser features like clipboard, notifications, battery, vibration, and more — perfect for modern web developers.
32 lines (31 loc) • 1.04 kB
JavaScript
/**
* @fileoverview Debounce utility — delays function execution until after a pause.
* Useful for input events, search bars, resize listeners, etc.
*/
/**
* Creates a debounced version of the given function.
* @param fn - The function to debounce
* @param delay - Delay in milliseconds
* @returns A debounced function
*/
export function debounce(fn, delay) {
if (typeof fn !== 'function') {
throw new TypeError('[webdev-power-kit][debounce] First argument must be a function.');
}
if (typeof delay !== 'number' || delay < 0) {
throw new TypeError('[webdev-power-kit][debounce] Delay must be a non-negative number.');
}
let timer = null;
return function debouncedFn(...args) {
if (timer)
clearTimeout(timer);
timer = setTimeout(() => {
try {
fn(...args);
}
catch (err) {
console.error('[webdev-power-kit][debounce] Function threw an error:', err);
}
}, delay);
};
}