Home > @rushstack/node-core-library > Async > mapAsync
Async.mapAsync() method
This API is provided as a preview for developers and may change based on feedback that we receive. Do not use this API in a production environment.
Given an input array and a callback
function, invoke the callback to start a promise for each element in the array. Returns an array containing the results.
Signature:
static mapAsync<TEntry, TRetVal>(iterable: Iterable<TEntry> | AsyncIterable<TEntry>, callback: (entry: TEntry, arrayIndex: number) => Promise<TRetVal>, options?: IAsyncParallelismOptions | undefined): Promise<TRetVal[]>;
Parameters
Parameter | Type | Description |
---|---|---|
iterable | Iterable<TEntry> | AsyncIterable<TEntry> | the array of inputs for the callback function |
callback | (entry: TEntry, arrayIndex: number) => Promise<TRetVal> | a function that starts an asynchronous promise for an element from the array |
options | IAsyncParallelismOptions | undefined | (Optional) options for customizing the control flow |
Returns:
Promise<TRetVal[]>
an array containing the result for each callback, in the same order as the original input array
Remarks
This API is similar to the system Array#map
, except that the loop is asynchronous, and the maximum number of concurrent promises can be throttled using IAsyncParallelismOptions.concurrency.
If callback
throws a synchronous exception, or if it returns a promise that rejects, then the loop stops immediately. Any remaining array items will be skipped, and overall operation will reject with the first error that was encountered.