You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					102 lines
				
				2.7 KiB
			
		
		
			
		
	
	
					102 lines
				
				2.7 KiB
			| 
											3 years ago
										 | # 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> |