Skip to main content

@std/async@0.215.0

latest
Works with
It is unknown whether this package works with Browsers, Deno, Node.js, Cloudflare Workers, Bun
It is unknown whether this package works with Browsers
It is unknown whether this package works with Deno
It is unknown whether this package works with Node.js
It is unknown whether this package works with Cloudflare Workers
It is unknown whether this package works with Bun
JSR Score70%
Published2 years ago (0.215.0)
function pooledMap
pooledMap<T, R>(
poolLimit: number,
array: Iterable<T> | AsyncIterable<T>,
iteratorFn: (data: T) => Promise<R>
): AsyncIterableIterator<R>

pooledMap transforms values from an (async) iterable into another async iterable. The transforms are done concurrently, with a max concurrency defined by the poolLimit.

If an error is thrown from iterableFn, no new transformations will begin. All currently executing transformations are allowed to finish and still yielded on success. After that, the rejections among them are gathered and thrown by the iterator in an AggregateError.

Examples

Example 1

import { pooledMap } from "@std/async/pool";

const results = pooledMap(
  2,
  [1, 2, 3],
  (i) => new Promise((r) => setTimeout(() => r(i), 1000)),
);

for await (const value of results) {
  // ...
}

Type Parameters

Parameters

poolLimit: number

The maximum count of items being processed concurrently.

array: Iterable<T> | AsyncIterable<T>

The input array for mapping.

iteratorFn: (data: T) => Promise<R>

The function to call for every item of the array.

Return Type

AsyncIterableIterator<R>

Report package

Please provide a reason for reporting this package. We will review your report and take appropriate action.

Please review the JSR usage policy before submitting a report.

Add Package

deno add jsr:@std/async

Import symbol

import { pooledMap } from "@std/async/pool";
or

Import directly with a jsr specifier

import { pooledMap } from "jsr:@std/async/pool";