diff options
Diffstat (limited to '_includes/scripts/lib/throttle.js')
-rw-r--r-- | _includes/scripts/lib/throttle.js | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/_includes/scripts/lib/throttle.js b/_includes/scripts/lib/throttle.js new file mode 100644 index 0000000..2add23c --- /dev/null +++ b/_includes/scripts/lib/throttle.js @@ -0,0 +1,28 @@ +(function() { + window.throttle = function(func, wait) { + var args, result, thisArg, timeoutId, lastCalled = 0; + + function trailingCall() { + lastCalled = new Date; + timeoutId = null; + result = func.apply(thisArg, args); + } + return function() { + var now = new Date, + remaining = wait - (now - lastCalled); + + args = arguments; + thisArg = this; + + if (remaining <= 0) { + clearTimeout(timeoutId); + timeoutId = null; + lastCalled = now; + result = func.apply(thisArg, args); + } else if (!timeoutId) { + timeoutId = setTimeout(trailingCall, remaining); + } + return result; + }; + }; +})(); |