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

By admin

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.