30 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
		
		
			
		
	
	
			30 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
|  | export interface Limit { | ||
|  | 	/** | ||
|  | 	 * @param fn - Promise-returning/async function. | ||
|  | 	 * @param arguments - 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. | ||
|  | 	 * @returns The promise returned by calling `fn(...arguments)`. | ||
|  | 	 */ | ||
|  | 	<Arguments extends unknown[], ReturnType>( | ||
|  | 		fn: (...arguments: Arguments) => PromiseLike<ReturnType> | ReturnType, | ||
|  | 		...arguments: Arguments | ||
|  | 	): Promise<ReturnType>; | ||
|  | 
 | ||
|  | 	/** | ||
|  | 	 * The number of promises that are currently running. | ||
|  | 	 */ | ||
|  | 	readonly activeCount: number; | ||
|  | 
 | ||
|  | 	/** | ||
|  | 	 * The number of promises that are waiting to run (i.e. their internal `fn` was not called yet). | ||
|  | 	 */ | ||
|  | 	readonly pendingCount: number; | ||
|  | } | ||
|  | 
 | ||
|  | /** | ||
|  |  * Run multiple promise-returning & async functions with limited concurrency. | ||
|  |  * | ||
|  |  * @param concurrency - Concurrency limit. Minimum: `1`. | ||
|  |  * @returns A `limit` function. | ||
|  |  */ | ||
|  | export default function pLimit(concurrency: number): Limit; |