p-limit
¶ ↑
Run multiple promise-returning & async functions with limited concurrency
Install¶ ↑
$ npm install p-limit
Usage¶ ↑
const pLimit = require('p-limit'); const limit = pLimit(1); const input = [ limit(() => fetchSomething('foo')), limit(() => fetchSomething('bar')), limit(() => doSomething()) ]; (async () => { // Only one promise is run at once const result = await Promise.all(input); console.log(result); })();
API¶ ↑
pLimit(concurrency)¶ ↑
Returns a limit
function.
concurrency¶ ↑
Type: number
Minimum: 1
Default: Infinity
Concurrency limit.
limit(fn, …args)¶ ↑
Returns the promise returned by calling fn(...args)
.
fn¶ ↑
Type: Function
Promise-returning/async function.
args¶ ↑
Any arguments to pass through to fn
.
Support for passing arguments on to the fn
is provided in order to be able to avoid creating unnecessary closures. You probably don't need this optimization unless you're pushing a lot of functions.
limit.activeCount¶ ↑
The number of promises that are currently running.
limit.pendingCount¶ ↑
The number of promises that are waiting to run (i.e. their internal fn
was not called yet).
FAQ¶ ↑
How is this different from the {p-queue
} package?¶ ↑
This package is only about limiting the number of concurrent executions, while p-queue
is a fully featured queue implementation with lots of different options, introspection, and ability to pause and clear the queue.
Related¶ ↑
-
p-queue - Promise queue with concurrency control
-
p-throttle - Throttle promise-returning & async functions
-
p-debounce - Debounce promise-returning & async functions
-
p-all - Run promise-returning & async functions concurrently with optional limited concurrency
Tidelift helps make open source sustainable for maintainers while giving companies
assurances about security, maintenance, and licensing for their dependencies.