simultan

Simultaneously run an async function on any iterable with limited concurrency

Usage no npm install needed!

<script type="module">
  import simultan from 'https://cdn.skypack.dev/simultan';
</script>

README

Simultan CI npm

Simultaneously run an async function on any iterable with limited concurrency.

Simultan takes an iterable, executes an async method on each value, and returns a single Promise. The promise contains an array of all the resolved return values. The number of concurrent invocations can be limited.

Install

$ npm install --save simultan

Usage

import { simultan } from 'simultan';

const urls = [
    // ... array of urls to fetch
]

await simultan(urls, async url => {
    const response = fetch(url);
    return response.json();
});
//=> [{...}, {...}, {...}, ]

API

simultan<T, R = unknown>(iterable, fn, limit = 200)

Returns: Promise<unknown[]>

Simultan executes an async callback on each value of any Iterable. A single Promise is returned with an array of the resolved return values.

This returned promise will resolve when all invocations of the callback method have been resolved.

iterable

Type: Iterable<T> | AsyncIterable<T>
Required: true

Iterable to iterate and execute async callback function on.

fn

Type: IteratorFn<T, R> = (item: T) => Promise<R>
Required: true

limit

Type: number
Default: 200
Required: false

Maximum number of concurrent invocations.

License

MIT © Terkel Gjervig