Sometimes, we would like to wait a certain minimum time period before successive method calls. For example in events like onscroll(), onresize(), this can go a long way in terms of optimizing the page performance as a whole.
The wrapping of the methods using a Debounce method is a simple way to achieve the desired result.
const debounce = (fn, interval) => {
let timeout;
return (...rest) => {
if (timeout)
clearTimeout(timeout);
timeout = setTimeout(() => {
fn.apply(this, rest);
}, 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);