[API reference](https://evolu.dev/docs/api-reference) › [@evolu/common](https://evolu.dev/docs/api-reference/common) › [Task](https://evolu.dev/docs/api-reference/common/Task) › any

```ts
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:4249](https://github.com/evoluhq/evolu/blob/037c390af081e9944d616ff298a729515c5c5ab7/packages/common/src/Task.ts#L4249)

Runs [Task](https://evolu.dev/docs/api-reference/common/Task/type-aliases/Task)s until one returns [Ok](https://evolu.dev/docs/api-reference/common/Result/interfaces/Ok) or all return [Err](https://evolu.dev/docs/api-reference/common/Result/interfaces/Err).

Use [race](https://evolu.dev/docs/api-reference/common/Task/functions/race) to return the first settled [Result](https://evolu.dev/docs/api-reference/common/Result/type-aliases/Result) instead, whether Ok
or [Err](https://evolu.dev/docs/api-reference/common/Result/interfaces/Err).

Returns the first [Ok](https://evolu.dev/docs/api-reference/common/Result/interfaces/Ok) Result. Queued Tasks are not started, and other
running 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](https://evolu.dev/docs/api-reference/common/Task/functions/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](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/any),
but runs Tasks, returns Result values, and stops after the first Ok.

### Example

```ts
import {
  assertOk,
  assertType,
  assertTrue,
  any,
  createRun,
  err,
  ok,
  type Result,
  type Task,
  type Typed,
} from "@evolu/common";

const unavailable: Task<string, ServiceUnavailableError> = () =>
  err({ type: "ServiceUnavailable" });

interface ServiceUnavailableError extends Typed<"ServiceUnavailable"> {}

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

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

assertType<Result<string, ServiceUnavailableError>, typeof result>();
assertOk(result, "fallback");
assertTrue(fallbackStarted);
```