compound-ex4
Version:
Compound-ex4 - MVC framework for NodeJS (ExpressJs 4 version), fork compoundjs(https://github.com/1602/compound)
34 lines (31 loc) • 735 B
JavaScript
;
var callable = require('es5-ext/object/valid-callable')
, nextTick = require('next-tick')
, validTimeout = require('./valid-timeout');
module.exports = function (fn/*, timeout*/) {
var scheduled, run, context, args, delay, index, timeout = arguments[1];
callable(fn);
if (timeout === undefined) {
delay = nextTick;
} else {
timeout = validTimeout(timeout);
delay = setTimeout;
}
run = function () {
scheduled = false;
index = null;
fn.apply(context, args);
context = null;
args = null;
};
return function () {
if (scheduled) {
if (index == null) return;
clearTimeout(index);
}
scheduled = true;
context = this;
args = arguments;
index = delay(run, timeout);
};
};