aboutsummaryrefslogtreecommitdiff
path: root/node_modules/@calebboyd/semaphore/each.js
diff options
context:
space:
mode:
authorMinteck <nekostarfan@gmail.com>2021-08-24 14:41:48 +0200
committerMinteck <nekostarfan@gmail.com>2021-08-24 14:41:48 +0200
commitd25e11bee6ca5ca523884da132d18e1400e077b9 (patch)
tree8af39fde19f7ed640a60fb397c7edd647dff1c4c /node_modules/@calebboyd/semaphore/each.js
downloadkartik-iridium-d25e11bee6ca5ca523884da132d18e1400e077b9.tar.gz
kartik-iridium-d25e11bee6ca5ca523884da132d18e1400e077b9.tar.bz2
kartik-iridium-d25e11bee6ca5ca523884da132d18e1400e077b9.zip
Initial commit
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;