API reference@evolu/commonTask › any

function any<TTasks>(
  tasks: TTasks,
  options?: TaskCollectionOptions,
): Task<
  InferTaskOk<TTasks[number]>,
  InferTaskErr<TTasks[number]>,
  ParameterIntersection<
    TTasks[number] extends TTask
      ? TTask extends AnyTask
        ? (deps: InferTaskDeps<TTask>) => void
        : never
      : never
  >
>;

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

Runs Tasks until one returns Ok or all return Err.

Use race to return the first settled Result instead, whether Ok or Err.

Returns the first Ok Result. Losing Tasks are aborted. If no Task returns Ok, returns the last Err by input order, regardless of completion order. Other Err results are discarded; use allSettled when you need every error.

Sequential by default; pass a concurrency option to run more than one Task at a time.

Similar to Promise.any, but races Tasks, returns Result values, and aborts losers.

Example

import { any, createRun, err, ok, type Result, type Task } from "@evolu/common";

const unavailable: Task<string, "Unavailable"> = () => err("Unavailable");
let fallbackStarted = false;
const fallback: Task<string> = () => {
  fallbackStarted = true;
  return ok("fallback");
};

await using run = createRun();
const result = await run(any([unavailable, fallback]));

expectTypeOf(result).toEqualTypeOf<Result<string, "Unavailable">>();
expectOk(result, "fallback");
expect(fallbackStarted).toBe(true);