aboutsummaryrefslogtreecommitdiff
path: root/node_modules/@calebboyd/semaphore/each.js
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/@calebboyd/semaphore/each.js')
-rw-r--r--node_modules/@calebboyd/semaphore/each.js18
1 files changed, 18 insertions, 0 deletions
diff --git a/node_modules/@calebboyd/semaphore/each.js b/node_modules/@calebboyd/semaphore/each.js
new file mode 100644
index 0000000..a17efc5
--- /dev/null
+++ b/node_modules/@calebboyd/semaphore/each.js
@@ -0,0 +1,18 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+var semaphore_1 = require("./semaphore");
+function each(list, iterator, _a) {
+ var _b = _a === void 0 ? { concurrency: null } : _a, context = _b.context, concurrency = _b.concurrency;
+ var arrList = Array.from(list);
+ context = context || this;
+ if (concurrency === null)
+ concurrency = arrList.length;
+ var lock = new semaphore_1.Semaphore(concurrency);
+ var pending = [];
+ var handler = function (locks) { return iterator.call(context, arrList[locks - 1], locks - 1, list); };
+ for (var i = 0; i < arrList.length; i++) {
+ pending.push(lock.acquire().then(handler).then(lock.release));
+ }
+ return Promise.all(pending).then(function () { return void 0; });
+}
+exports.each = each;