API reference › @evolu/common › Task › mapSettled
Call Signature
function mapSettled<A, T, E, D>(
items: Iterable<A>,
task: (a: A) => Task<T, E, D>,
options?: CollectOptions<true>,
): Task<readonly Result<T, AbortError | E>[], never, D>;
Defined in: packages/common/src/Task.ts:3381
Maps values to Tasks, completing all regardless of failures.
Returns an array of Results preserving the original order. Sequential by default — use concurrently for concurrent execution.
Example
const results = await run(mapSettled(userIds, fetchUser));
if (!results.ok) return results; // Only AbortError
for (const result of results.value) {
if (result.ok) {
console.log("Success:", result.value);
} else {
console.log("Failed:", result.error);
}
}
See
Call Signature
function mapSettled<A, T, E, D, K>(
items: Readonly<Record<K, A>>,
task: (a: A) => Task<T, E, D>,
options?: CollectOptions<true>,
): Task<Readonly<Record<K, Result<T, AbortError | E>>>, never, D>;
Defined in: packages/common/src/Task.ts:3396
Returns object with same keys.
const results = await run(mapSettled({ a: 1, b: 2 }, (n) => double(n)));
if (!results.ok) return results;
// results.value: { a: Result<number, E>, b: Result<number, E> }
Call Signature
function mapSettled<A, T, E, D>(
items: readonly [A, A],
task: (a: A) => Task<T, E, D>,
options?: CollectOptions<true>,
): Task<
readonly [Result<T, AbortError | E>, Result<T, AbortError | E>],
never,
D
>;
Defined in: packages/common/src/Task.ts:3412
Guarantees non-empty result.
const ids: NonEmptyReadonlyArray<UserId> = [id1, id2];
const results = await run(mapSettled(ids, fetchUser));
if (!results.ok) return results;
// results.value: NonEmptyReadonlyArray<Result<User, FetchError | AbortError>>
Call Signature
function mapSettled<A, T, E, D>(
items: Iterable<A, any, any> | Readonly<Record<string, A>>,
task: (a: A) => Task<T, E, D>,
options: CollectOptions<false>,
): Task<void, never, D>;
Defined in: packages/common/src/Task.ts:3428
Run for side effects only.
const result = await run(mapSettled(userIds, sendEmail, { collect: false }));
// result.value: void