API reference@evolu/commonTask › 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

CollectOptions

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