aboutsummaryrefslogtreecommitdiffstats
path: root/vnfmarket/src/main/webapp/vnfmarket/node_modules/throttleit/index.js
diff options
context:
space:
mode:
Diffstat (limited to 'vnfmarket/src/main/webapp/vnfmarket/node_modules/throttleit/index.js')
-rw-r--r--vnfmarket/src/main/webapp/vnfmarket/node_modules/throttleit/index.js32
1 files changed, 32 insertions, 0 deletions
diff --git a/vnfmarket/src/main/webapp/vnfmarket/node_modules/throttleit/index.js b/vnfmarket/src/main/webapp/vnfmarket/node_modules/throttleit/index.js
new file mode 100644
index 00000000..1cc3ad61
--- /dev/null
+++ b/vnfmarket/src/main/webapp/vnfmarket/node_modules/throttleit/index.js
@@ -0,0 +1,32 @@
+module.exports = throttle;
+
+/**
+ * Returns a new function that, when invoked, invokes `func` at most once per `wait` milliseconds.
+ *
+ * @param {Function} func Function to wrap.
+ * @param {Number} wait Number of milliseconds that must elapse between `func` invocations.
+ * @return {Function} A new function that wraps the `func` function passed in.
+ */
+
+function throttle (func, wait) {
+ var ctx, args, rtn, timeoutID; // caching
+ var last = 0;
+
+ return function throttled () {
+ ctx = this;
+ args = arguments;
+ var delta = new Date() - last;
+ if (!timeoutID)
+ if (delta >= wait) call();
+ else timeoutID = setTimeout(call, wait - delta);
+ return rtn;
+ };
+
+ function call () {
+ timeoutID = 0;
+ last = +new Date();
+ rtn = func.apply(ctx, args);
+ ctx = null;
+ args = null;
+ }
+}