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

## Call Signature

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

Completes all [Task](https://evolu.dev/docs/api-reference/common/Task/type-aliases/Task)s regardless of individual failures.

Like
[Promise.allSettled](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/allSettled),
all Tasks run to completion regardless of individual failures. Returns an
array of [Result](https://evolu.dev/docs/api-reference/common/Result/type-aliases/Result)s preserving the original order.

Sequential by default. Use [concurrently](https://evolu.dev/docs/api-reference/common/Task/functions/concurrently) for concurrent execution.

### Example

```ts
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](https://evolu.dev/docs/api-reference/common/Task/interfaces/CollectOptions)

## Call Signature

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

Returns object with same keys.

```ts
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

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

For dynamic or generated task lists.

```ts
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

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

Guarantees non-empty result.

```ts
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

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

Run for side effects only.

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