| # p-limit [](https://travis-ci.org/sindresorhus/p-limit) |
| |
| > Run multiple promise-returning & async functions with limited concurrency |
| |
| |
| ## Install |
| |
| ``` |
| $ npm install p-limit |
| ``` |
| |
| |
| ## Usage |
| |
| ```js |
| 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`<br> |
| Minimum: `1`<br> |
| 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`](https://github.com/sindresorhus/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](https://github.com/sindresorhus/p-queue) - Promise queue with concurrency control |
| - [p-throttle](https://github.com/sindresorhus/p-throttle) - Throttle promise-returning & async functions |
| - [p-debounce](https://github.com/sindresorhus/p-debounce) - Debounce promise-returning & async functions |
| - [p-all](https://github.com/sindresorhus/p-all) - Run promise-returning & async functions concurrently with optional limited concurrency |
| - [More…](https://github.com/sindresorhus/promise-fun) |
| |
| |
| --- |
| |
| <div align="center"> |
| <b> |
| <a href="https://tidelift.com/subscription/pkg/npm-p-limit?utm_source=npm-p-limit&utm_medium=referral&utm_campaign=readme">Get professional support for this package with a Tidelift subscription</a> |
| </b> |
| <br> |
| <sub> |
| Tidelift helps make open source sustainable for maintainers while giving companies<br>assurances about security, maintenance, and licensing for their dependencies. |
| </sub> |
| </div> |