JSFiddle - React, Tailwind, and code Playground

JavaScript

const debounce = (fn, interval) => {
  let timeout;
  return (...rest) => {
    const func = () => {
      fn.apply(this, rest);
    }
    if (timeout)
      clearTimeout(timeout);
    timeout = setTimeout(func, interval);
  };
}

const test = (inp) => {
  console.log(inp);
};

const db = debounce(test, 1000);
const cb = () => {
  db('test');
};
const button = document.createElement('button');
button.innerHTML = 'fire';
document.body.appendChild(button);
button.addEventListener('click', cb);