JSFiddle - React, Tailwind, and code Playground
by tabalinas
HTML
<button>Click Me</button>
JavaScript
// func1
var ratedClick = function(click, timeout) {
var locked = false;
return function() {
if(!locked) {
click();
locked = true;
setTimeout(function() {
locked = false;
}, timeout);
}
};
};
// func2
var ratedQueueClick = function(click, timeout) {
var counter = 0;
var locked = false;
var queueExec = function() {
if(counter) {
click();
counter--;
setTimeout(queueExec, timeout);
} else {
locked = false;
}
};
return function() {
if(!locked) {
click();
locked = true;
setTimeout(queueExec, timeout);
} else {
counter++;
}
};
};
// main
var time = new Date;
$("button").on("click", ratedQueueClick(function() {
console.log("handled: " + (new Date - time));
}, 500));
// tests
setTimeout(function() {
$("button").click();
}, 0);
setTimeout(function() {
$("button").click();
}, 150);
setTimeout(function() {
$("button").click();
}, 400);
setTimeout(function() {
$("button").click();
}, 600);