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

```ts
function arrayFromAsync<T>(
  iterable: AsyncIterable<T, any, any> | Iterable<T | PromiseLike<T>, any, any>,
): Promise<readonly T[]>;
```

Defined in: [packages/common/src/Array.ts:225](https://github.com/evoluhq/evolu/blob/e7144e2bbe9069362b62dec1b64a8aa922b8f1b0/packages/common/src/Array.ts#L225)

Better `Array.fromAsync`.

Returns a readonly array and awaits promised items from sync or async
iterables.

### Example

```ts
await arrayFromAsync(new Set([1, 2, 3])); // ReadonlyArray<number>
await arrayFromAsync(
  (async function* () {
    yield Promise.resolve(1);
    yield Promise.resolve(2);
  })(),
); // [1, 2]
```

Unlike `Array.fromAsync`, there's no map parameter — map the result with
[mapArray](https://evolu.dev/docs/api-reference/common/Array/functions/mapArray) or use
[iterator helpers](https://web.dev/blog/baseline-iterator-helpers)
directly on iterables.