31 lines
750 B
JavaScript
31 lines
750 B
JavaScript
|
|
/**
|
|
* Module exports.
|
|
*/
|
|
|
|
module.exports = throttle;
|
|
|
|
/**
|
|
* Returns a new function that, when invoked, invokes `func` at most one time per
|
|
* `wait` milliseconds.
|
|
*
|
|
* @param {Function} func The `Function` instance to wrap.
|
|
* @param {Number} wait The minimum number of milliseconds that must elapse in between `func` invokations.
|
|
* @return {Function} A new function that wraps the `func` function passed in.
|
|
* @api public
|
|
*/
|
|
|
|
function throttle (func, wait) {
|
|
var rtn; // return value
|
|
var last = 0; // last invokation timestamp
|
|
return function throttled () {
|
|
var now = new Date().getTime();
|
|
var delta = now - last;
|
|
if (delta >= wait) {
|
|
rtn = func.apply(this, arguments);
|
|
last = now;
|
|
}
|
|
return rtn;
|
|
};
|
|
}
|