JSFiddle - React, Tailwind, and code Playground

by kazabr

JavaScript

function f(x) {
    console.log(x);
}

function debounce(f, ms) {
    var state = null,
        COOLDOWN = 1;

    return function () {
        if (state) return;
        
        f.apply(this, arguments);
        
        state = COOLDOWN;
        
        setTimeout(function() {state = null;}, ms);
    }
}

var f = debounce(f, 1000);

console.clear();

f(1);
f(2);

setTimeout( function() { f(3) }, 100 );
setTimeout( function() { f(4) }, 1100 );
setTimeout( function() { f(5) }, 1500 );