91 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
		
		
			
		
	
	
			91 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
|  | # 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` | ||
|  | 
 | ||
|  | 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) | ||
|  | 
 | ||
|  | 
 | ||
|  | ## License
 | ||
|  | 
 | ||
|  | MIT © [Sindre Sorhus](https://sindresorhus.com) |