API reference@evolu/commonTask › allSettled

Call Signature

function allSettled<T>(
  tasks: T,
  options?: CollectOptions<true>,
): Task<
  {
    [K in string | number | symbol]: Result<
      InferTaskOk<T[K]>,
      AbortError | InferTaskErr<T[K]>
    >;
  },
  never,
  InferTaskDeps<T[number]>
>;

Defined in: packages/common/src/Task.ts:3151

Completes all Tasks regardless of individual failures.

Like Promise.allSettled, all Tasks run to completion regardless of individual failures. Returns an array of Results preserving the original order.

Sequential by default. Use concurrently for concurrent execution.

Example

const results = await run(allSettled([fetchUser, fetchPosts, fetchComments]));
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 allSettled<T>(
  tasks: T,
  options?: CollectOptions<true>,
): Task<
  {
    [P in string | number | symbol]: Result<
      InferTaskOk<T[P]>,
      AbortError | InferTaskErr<T[P]>
    >;
  },
  never,
  [keyof T] extends [never] ? unknown : InferTaskDeps<T[keyof T]>
>;

Defined in: packages/common/src/Task.ts:3175

Returns object with same keys.

const results = await run(allSettled({ user: fetchUser, posts: fetchPosts }));
if (!results.ok) return results;
const { user, posts } = results.value; // Each is Result<T, E>

Call Signature

function allSettled<T, E, D>(
  tasks: Iterable<Task<T, E, D>>,
  options?: CollectOptions<true>,
): Task<readonly Result<T, AbortError | E>[], never, D>;

Defined in: packages/common/src/Task.ts:3196

For dynamic or generated task lists.

const urls: ReadonlyArray<string> = getUrls();
const results = await run(allSettled(tasks));
if (!results.ok) return results;
// results.value: ReadonlyArray<Result<Response, FetchError | AbortError>>

Call Signature

function allSettled<T, E, D>(
  tasks: readonly [Task<T, E, D>, 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:3214

Guarantees non-empty result.

const tasks: NonEmptyReadonlyArray<Task<Response, FetchError>> = [
  fetchUrl("/a"),
  fetchUrl("/b"),
];
const results = await run(allSettled(tasks));
if (!results.ok) return results;
// results.value: NonEmptyReadonlyArray<Result<Response, FetchError | AbortError>>

Call Signature

function allSettled<T, E, D>(
  tasks:
    | Iterable<Task<T, E, D>, any, any>
    | Readonly<Record<string, Task<T, E, D>>>,
  options: CollectOptions<false>,
): Task<void, never, D>;

Defined in: packages/common/src/Task.ts:3227

Run for side effects only.

const result = await run(allSettled(tasks, { collect: false }));
// result.value: void