Delayedaction.js
function delayedaction (action, time) {
if (time === undefined) { time = 1000; }
var timeout_id = null,
that = {};
function cancel () {
if (timeout_id !== null) {
window.clearTimeout(timeout_id);
timeout_id = null;
}
}
that.cancel = cancel;
function performAction () {
action();
timeout_id = null;
}
that.do_soon = function () {
cancel();
timeout_id = window.setTimeout(performAction, time);
};
that.do_now = function () {
performAction();
};
return that;
}
Usage:
function sayhello () {
console.log("hello");
}
var delayedhello = delayedaction (sayhello, 1000);
delayedhello.do_soon();
delayedhello.do_soon();
delayedhello.do_soon();
delayedhello.do_soon();