DE
function debounce(f, ms) {
let isCooldown = false;
return function() {
if (isCooldown) return;
f.apply(this, arguments);
isCooldown = true;
setTimeout(() => isCooldown = false, ms);
};
}
f(1) // рабоатет
setTimeout( () => f(2), 3000);
setTimeout( () => f(3), 4000);
Если написать в таком формате то код отрабатывает. Правда не знаю почему ))