Run multiple promise-returning & async functions with limited concurrency
$ npm install p-limit
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); })();
Returns a limit
function.
Type: number
Minimum: 1
Default: Infinity
Concurrency limit.
Returns the promise returned by calling fn(...args)
.
Type: Function
Promise-returning/async function.
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.
The number of promises that are currently running.
The number of promises that are waiting to run (i.e. their internal fn
was not called yet).
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.