Packages
A web application in pursuit of meaning in life.
Retired package: Complete rewrite, scratch old versions
Current section
Files
Jump to
Current section
Files
assets/node_modules/mout/function/throttle.js
var now = require('../time/now');
/**
*/
function throttle(fn, delay){
var context, timeout, result, args,
diff, prevCall = 0;
function delayed(){
prevCall = now();
timeout = null;
result = fn.apply(context, args);
}
function throttled(){
context = this;
args = arguments;
diff = delay - (now() - prevCall);
if (diff <= 0) {
clearTimeout(timeout);
delayed();
} else if (! timeout) {
timeout = setTimeout(delayed, diff);
}
return result;
}
throttled.cancel = function(){
clearTimeout(timeout);
};
return throttled;
}
module.exports = throttle;