diff options
author | Myles Borins <mylesborins@github.com> | 2020-10-02 17:52:19 -0400 |
---|---|---|
committer | Myles Borins <mylesborins@github.com> | 2020-10-07 09:59:49 -0400 |
commit | 2e545249557c265f7d5f338cc3a382985211603c (patch) | |
tree | a18ca49252a58cc5a80cd438a020a99bf48a8d23 /deps/npm/node_modules/promise-call-limit/index.js | |
parent | 14699846452e627f97dedb85991eea67d932a79d (diff) | |
download | node-new-2e545249557c265f7d5f338cc3a382985211603c.tar.gz |
deps: update npm to 7.0.0-rc.3
PR-URL: https://github.com/nodejs/node/pull/35474
Reviewed-By: Ruy Adorno <ruyadorno@github.com>
Reviewed-By: Ujjwal Sharma <ryzokuken@disroot.org>
Reviewed-By: Ben Coe <bencoe@gmail.com>
Reviewed-By: Geoffrey Booth <webmaster@geoffreybooth.com>
Reviewed-By: Rich Trott <rtrott@gmail.com>
Reviewed-By: Shelley Vohr <codebytere@gmail.com>
Reviewed-By: Guy Bedford <guybedford@gmail.com>
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Diffstat (limited to 'deps/npm/node_modules/promise-call-limit/index.js')
-rw-r--r-- | deps/npm/node_modules/promise-call-limit/index.js | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/deps/npm/node_modules/promise-call-limit/index.js b/deps/npm/node_modules/promise-call-limit/index.js new file mode 100644 index 0000000000..a093c2481c --- /dev/null +++ b/deps/npm/node_modules/promise-call-limit/index.js @@ -0,0 +1,43 @@ +const defLimit = require('os').cpus().length +const callLimit = (queue, limit = defLimit) => new Promise((res, rej) => { + let active = 0 + let current = 0 + const results = [] + + let rejected = false + const reject = er => { + if (rejected) + return + rejected = true + rej(er) + } + + let resolved = false + const resolve = () => { + if (resolved || active > 0) + return + resolved = true + res(results) + } + + const run = () => { + const c = current++ + if (c >= queue.length) { + return resolve() + } + + active ++ + results[c] = queue[c]().then(result => { + active -- + results[c] = result + run() + return result + }, reject) + } + + for (let i = 0; i < limit; i++) { + run() + } +}) + +module.exports = callLimit |