|
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101 |
- # p-limit [![Build Status](https://travis-ci.org/sindresorhus/p-limit.svg?branch=master)](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`\
- 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).
-
- ### limit.clearQueue()
-
- Discard pending promises that are waiting to run.
-
- This might be useful if you want to teardown the queue at the end of your program's lifecycle or discard any function calls referencing an intermediary state of your app.
-
- Note: This does not cancel promises that are already running.
-
- ## 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 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>
|