API reference › @evolu/common › Task › 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);