Used for delaying keypress searches, etc
function debounce(fn, delay) {
let timer;
return (…args) => {
clearTimeout(timer);
timer = setTimeout(() => fn(…args), delay);
};
}
Usage example:
const search = debounce((query) => {
fetch(/api/search?q=${query});
}, 300);
input.addEventListener('keyup', (e) => search(e.target.value));
Above will request /api/search endpoint 300ms after last keyup event