summaryrefslogtreecommitdiff
path: root/_includes/scripts/lib/throttle.js
diff options
context:
space:
mode:
Diffstat (limited to '_includes/scripts/lib/throttle.js')
-rw-r--r--_includes/scripts/lib/throttle.js28
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;
+ };
+ };
+})();