JSFiddle - React, Tailwind, and code Playground
by artgas_pro
JavaScript
function f(x) {
alert(x);
}
function calls(func, ms) {
let call = true
return function (x) {
console.log("UP: " + call + " " + x)
if (!call) {
setTimeout(() => { call = true }, ms);
return false
} else {
console.log("BEFORE: " + call + " " + x)
call = false;
console.log("AFTER: " + call + " " + x)
return func.apply(this, arguments);
}
}
}
// создаём обёртку
f = calls(f, 1000);
f(1);
f(2);
setTimeout(() => f(3), 100);
setTimeout(() => f(4), 1100); // выполняется
setTimeout(() => f(5), 1500); // должен быть проигнорирован (прошло только 400 мс от последнего вызова) но выполняется.