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

## Call Signature

```ts
function map<A, T, E, D>(
  items: Iterable<A>,
  task: (a: A) => Task<T, E, D>,
  options?: CollectOptions<true>,
): Task<readonly T[], E, D>;
```

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

Maps values to [Task](https://evolu.dev/docs/api-reference/common/Task/type-aliases/Task)s, failing fast on first error.

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

### Example

```ts
const result = await run(map(userIds, fetchUser));
if (!result.ok) return result;
// result.value: ReadonlyArray<User>
```

### See

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

## Call Signature

```ts
function map<A, T, E, D, K>(
  items: Readonly<Record<K, A>>,
  task: (a: A) => Task<T, E, D>,
  options?: CollectOptions<true>,
): Task<Readonly<Record<K, T>>, E, D>;
```

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

Returns object with same keys.

```ts
const result = await run(map({ a: 1, b: 2 }, (n) => double(n)));
if (!result.ok) return result;
// result.value: { a: number, b: number }
```

## Call Signature

```ts
function map<A, T, E, D>(
  items: readonly [A, A],
  task: (a: A) => Task<T, E, D>,
  options?: CollectOptions<true>,
): Task<readonly [T, T], E, D>;
```

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

Guarantees non-empty result.

```ts
const ids: NonEmptyReadonlyArray<UserId> = [id1, id2];
const result = await run(map(ids, fetchUser));
if (!result.ok) return result;
// result.value: NonEmptyReadonlyArray<User>
```

## Call Signature

```ts
function map<A, T, E, D>(
  items: Iterable<A, any, any> | Readonly<Record<string, A>>,
  task: (a: A) => Task<T, E, D>,
  options: CollectOptions<false>,
): Task<void, E, D>;
```

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

Run for side effects only.

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