Debounce

Run a function only after the user stops typing or resizing.

js-debounce.js
function debounce(fn, wait = 300) {
  let timer;
  return (...args) => {
    clearTimeout(timer);
    timer = setTimeout(() => fn(...args), wait);
  };
}

const log = debounce((q) => console.log("search for", q), 200);
log("p"); log("pa"); log("pan");   // only "pan" is logged