it-parallel
Advanced tools
Comparing version
@@ -0,1 +1,72 @@ | ||
/** | ||
* @packageDocumentation | ||
* | ||
* Takes an (async) iterable that emits promise-returning functions, invokes them in parallel up to the concurrency limit and emits the results as they become available, optionally in the same order as the input | ||
* | ||
* @example | ||
* | ||
* ```javascript | ||
* import parallel from 'it-parallel' | ||
* import all from 'it-all' | ||
* import delay from 'delay' | ||
* | ||
* // This can also be an iterator, async iterator, generator, etc | ||
* const input = [ | ||
* async () => { | ||
* console.info('start 1') | ||
* await delay(500) | ||
* | ||
* console.info('end 1') | ||
* return 1 | ||
* }, | ||
* async () => { | ||
* console.info('start 2') | ||
* await delay(200) | ||
* | ||
* console.info('end 2') | ||
* return 2 | ||
* }, | ||
* async () => { | ||
* console.info('start 3') | ||
* await delay(100) | ||
* | ||
* console.info('end 3') | ||
* return 3 | ||
* } | ||
* ] | ||
* | ||
* const result = await all(parallel(input, { | ||
* concurrency: 2 | ||
* })) | ||
* | ||
* // output: | ||
* // start 1 | ||
* // start 2 | ||
* // end 2 | ||
* // start 3 | ||
* // end 3 | ||
* // end 1 | ||
* | ||
* console.info(result) // [2, 3, 1] | ||
* ``` | ||
* | ||
* If order is important, pass `ordered: true` as an option: | ||
* | ||
* ```javascript | ||
* const result = await all(parallel(input, { | ||
* concurrency: 2, | ||
* ordered: true | ||
* })) | ||
* | ||
* // output: | ||
* // start 1 | ||
* // start 2 | ||
* // end 2 | ||
* // start 3 | ||
* // end 3 | ||
* // end 1 | ||
* | ||
* console.info(result) // [1, 2, 3] | ||
* ``` | ||
*/ | ||
export interface ParallelOptions { | ||
@@ -2,0 +73,0 @@ /** |
@@ -1,2 +0,72 @@ | ||
/* global EventTarget Event */ | ||
/** | ||
* @packageDocumentation | ||
* | ||
* Takes an (async) iterable that emits promise-returning functions, invokes them in parallel up to the concurrency limit and emits the results as they become available, optionally in the same order as the input | ||
* | ||
* @example | ||
* | ||
* ```javascript | ||
* import parallel from 'it-parallel' | ||
* import all from 'it-all' | ||
* import delay from 'delay' | ||
* | ||
* // This can also be an iterator, async iterator, generator, etc | ||
* const input = [ | ||
* async () => { | ||
* console.info('start 1') | ||
* await delay(500) | ||
* | ||
* console.info('end 1') | ||
* return 1 | ||
* }, | ||
* async () => { | ||
* console.info('start 2') | ||
* await delay(200) | ||
* | ||
* console.info('end 2') | ||
* return 2 | ||
* }, | ||
* async () => { | ||
* console.info('start 3') | ||
* await delay(100) | ||
* | ||
* console.info('end 3') | ||
* return 3 | ||
* } | ||
* ] | ||
* | ||
* const result = await all(parallel(input, { | ||
* concurrency: 2 | ||
* })) | ||
* | ||
* // output: | ||
* // start 1 | ||
* // start 2 | ||
* // end 2 | ||
* // start 3 | ||
* // end 3 | ||
* // end 1 | ||
* | ||
* console.info(result) // [2, 3, 1] | ||
* ``` | ||
* | ||
* If order is important, pass `ordered: true` as an option: | ||
* | ||
* ```javascript | ||
* const result = await all(parallel(input, { | ||
* concurrency: 2, | ||
* ordered: true | ||
* })) | ||
* | ||
* // output: | ||
* // start 1 | ||
* // start 2 | ||
* // end 2 | ||
* // start 3 | ||
* // end 3 | ||
* // end 1 | ||
* | ||
* console.info(result) // [1, 2, 3] | ||
* ``` | ||
*/ | ||
import defer from 'p-defer'; | ||
@@ -3,0 +73,0 @@ const CustomEvent = globalThis.CustomEvent ?? Event; |
{ | ||
"name": "it-parallel", | ||
"version": "3.0.5", | ||
"description": "Takes an (async) iterable that emits promise-returning functions, invokes them in parallel up to the concurrency limit and emits the results as they become available, optionally in the same order as the input", | ||
"version": "3.0.6", | ||
"description": "Process incoming async(iterable) functions in parallel", | ||
"author": "Alex Potsides <alex@achingbrain.net>", | ||
@@ -32,2 +32,3 @@ "license": "Apache-2.0 OR MIT", | ||
"parserOptions": { | ||
"project": true, | ||
"sourceType": "module" | ||
@@ -138,3 +139,3 @@ } | ||
"devDependencies": { | ||
"aegir": "^40.0.11", | ||
"aegir": "^41.1.9", | ||
"delay": "^6.0.0", | ||
@@ -141,0 +142,0 @@ "it-all": "^3.0.0" |
@@ -1,32 +0,12 @@ | ||
# it-parallel <!-- omit in toc --> | ||
[](https://codecov.io/gh/achingbrain/it) | ||
[](https://github.com/achingbrain/it/actions/workflows/js-test-and-release.yml?query=branch%3Amaster) | ||
> Takes an (async) iterable that emits promise-returning functions, invokes them in parallel up to the concurrency limit and emits the results as they become available, optionally in the same order as the input | ||
> Process incoming async(iterable) functions in parallel | ||
## Table of contents <!-- omit in toc --> | ||
# About | ||
- [Install](#install) | ||
- [Browser `<script>` tag](#browser-script-tag) | ||
- [Usage](#usage) | ||
- [License](#license) | ||
- [Contribution](#contribution) | ||
Takes an (async) iterable that emits promise-returning functions, invokes them in parallel up to the concurrency limit and emits the results as they become available, optionally in the same order as the input | ||
## Install | ||
## Example | ||
```console | ||
$ npm i it-parallel | ||
``` | ||
### Browser `<script>` tag | ||
Loading this module through a script tag will make it's exports available as `ItParallel` in the global namespace. | ||
```html | ||
<script src="https://unpkg.com/it-parallel/dist/index.min.js"></script> | ||
``` | ||
## Usage | ||
```javascript | ||
@@ -96,4 +76,18 @@ import parallel from 'it-parallel' | ||
## License | ||
# Install | ||
```console | ||
$ npm i it-parallel | ||
``` | ||
## Browser `<script>` tag | ||
Loading this module through a script tag will make it's exports available as `ItParallel` in the global namespace. | ||
```html | ||
<script src="https://unpkg.com/it-parallel/dist/index.min.js"></script> | ||
``` | ||
# License | ||
Licensed under either of | ||
@@ -104,4 +98,4 @@ | ||
## Contribution | ||
# Contribution | ||
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions. |
@@ -1,2 +0,72 @@ | ||
/* global EventTarget Event */ | ||
/** | ||
* @packageDocumentation | ||
* | ||
* Takes an (async) iterable that emits promise-returning functions, invokes them in parallel up to the concurrency limit and emits the results as they become available, optionally in the same order as the input | ||
* | ||
* @example | ||
* | ||
* ```javascript | ||
* import parallel from 'it-parallel' | ||
* import all from 'it-all' | ||
* import delay from 'delay' | ||
* | ||
* // This can also be an iterator, async iterator, generator, etc | ||
* const input = [ | ||
* async () => { | ||
* console.info('start 1') | ||
* await delay(500) | ||
* | ||
* console.info('end 1') | ||
* return 1 | ||
* }, | ||
* async () => { | ||
* console.info('start 2') | ||
* await delay(200) | ||
* | ||
* console.info('end 2') | ||
* return 2 | ||
* }, | ||
* async () => { | ||
* console.info('start 3') | ||
* await delay(100) | ||
* | ||
* console.info('end 3') | ||
* return 3 | ||
* } | ||
* ] | ||
* | ||
* const result = await all(parallel(input, { | ||
* concurrency: 2 | ||
* })) | ||
* | ||
* // output: | ||
* // start 1 | ||
* // start 2 | ||
* // end 2 | ||
* // start 3 | ||
* // end 3 | ||
* // end 1 | ||
* | ||
* console.info(result) // [2, 3, 1] | ||
* ``` | ||
* | ||
* If order is important, pass `ordered: true` as an option: | ||
* | ||
* ```javascript | ||
* const result = await all(parallel(input, { | ||
* concurrency: 2, | ||
* ordered: true | ||
* })) | ||
* | ||
* // output: | ||
* // start 1 | ||
* // start 2 | ||
* // end 2 | ||
* // start 3 | ||
* // end 3 | ||
* // end 1 | ||
* | ||
* console.info(result) // [1, 2, 3] | ||
* ``` | ||
*/ | ||
@@ -3,0 +73,0 @@ import defer from 'p-defer' |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
24115
19.8%488
76.17%100
-5.66%