[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) › all

## Call Signature

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

Defined in: [packages/common/src/Task.ts:3022](https://github.com/evoluhq/evolu/blob/e7144e2bbe9069362b62dec1b64a8aa922b8f1b0/packages/common/src/Task.ts#L3022)

Fails fast on first error across multiple [Task](https://evolu.dev/docs/api-reference/common/Task/type-aliases/Task)s.

Sequential by default — use [concurrently](https://evolu.dev/docs/api-reference/common/Task/functions/concurrently) to run concurrently.

### Example

```ts
const result = await run(all([fetchUser, fetchPosts, fetchComments]));
if (!result.ok) return result;
const [user, posts, comments] = result.value;
```

### See

[CollectOptions](https://evolu.dev/docs/api-reference/common/Task/interfaces/CollectOptions)

## Call Signature

```ts
function all<T>(
  tasks: T,
  options?: CollectOptions<true>,
): Task<
  { [P in string | number | symbol]: InferTaskOk<T[P]> },
  [keyof T] extends [never] ? never : InferTaskErr<T[keyof T]>,
  [keyof T] extends [never] ? unknown : InferTaskDeps<T[keyof T]>
>;
```

Defined in: [packages/common/src/Task.ts:3042](https://github.com/evoluhq/evolu/blob/e7144e2bbe9069362b62dec1b64a8aa922b8f1b0/packages/common/src/Task.ts#L3042)

Returns object with same keys.

```ts
const result = await run(all({ user: fetchUser, posts: fetchPosts }));
if (!result.ok) return result;
const { user, posts } = result.value;
```

## Call Signature

```ts
function all<T, E, D>(
  tasks: Iterable<Task<T, E, D>>,
  options?: CollectOptions<true>,
): Task<readonly T[], E, D>;
```

Defined in: [packages/common/src/Task.ts:3061](https://github.com/evoluhq/evolu/blob/e7144e2bbe9069362b62dec1b64a8aa922b8f1b0/packages/common/src/Task.ts#L3061)

For dynamic or generated task lists.

```ts
const urls: ReadonlyArray<string> = getUrls();
const result = await run(map(urls, fetchUrl));
if (!result.ok) return result;
// result.value: ReadonlyArray<Response>
```

## Call Signature

```ts
function all<T, E, D>(
  tasks: readonly [Task<T, E, D>, Task<T, E, D>],
  options?: CollectOptions<true>,
): Task<readonly [T, T], E, D>;
```

Defined in: [packages/common/src/Task.ts:3079](https://github.com/evoluhq/evolu/blob/e7144e2bbe9069362b62dec1b64a8aa922b8f1b0/packages/common/src/Task.ts#L3079)

Guarantees non-empty result.

```ts
const tasks: NonEmptyReadonlyArray<Task<Response, FetchError>> = [
  fetchUrl("/a"),
  fetchUrl("/b"),
];
const result = await run(all(tasks));
if (!result.ok) return result;
// result.value: NonEmptyReadonlyArray<Response>
```

## Call Signature

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

Defined in: [packages/common/src/Task.ts:3092](https://github.com/evoluhq/evolu/blob/e7144e2bbe9069362b62dec1b64a8aa922b8f1b0/packages/common/src/Task.ts#L3092)

Run for side effects only.

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