UNPKG

mout

Version:

Modular Utilities

33 lines (28 loc) 806 B
var now = require('../time/now'); /** */ function throttle(fn, delay){ var context, timeout, result, args, cur, diff, prev = 0; function delayed(){ prev = now(); timeout = null; result = fn.apply(context, args); } function throttled(){ context = this; args = arguments; cur = now(); diff = delay - (cur - prev); if (diff <= 0) { clearTimeout(timeout); prev = cur; result = fn.apply(context, args); } else if (! timeout) { timeout = setTimeout(delayed, diff); } return result; } return throttled; } module.exports = throttle;