Skip to content

allKeyed

Promise 객체를 동시에 실행하고, 같은 키와 해결된 값을 가진 객체를 반환해요.

typescript
// a는 doA(), b는 doB()의 비동기 결과
const { a, b } = await allKeyed({ a: doA(), b: doB() });

사용법

allKeyed(tasks)

여러 Promise를 병렬로 실행하고, 위치 인덱스가 아닌 이름으로 결과에 접근하고 싶을 때 allKeyed를 사용하세요. Promise.all과 비슷하지만, 배열 대신 객체의 Promise를 받아서 결과에서 키를 유지해요.

TC39 Promise.allKeyed 제안에 기반해요.

typescript
import { allKeyed } from 'es-toolkit/promise';

const { user, posts } = await allKeyed({
  user: fetchUser(),
  posts: fetchPosts(),
});

Promise와 함께 일반 값도 지원해요.

typescript
const result = await allKeyed({
  a: Promise.resolve(1),
  b: 2,
});
// { a: 1, b: 2 }

배열 순서를 신경 쓰지 않고 여러 리소스를 병렬로 가져올 때도 유용해요.

typescript
// Promise.all은 순서가 바뀌면 구조 분해가 조용히 깨져요:
// const [user, posts] = await Promise.all([fetchUser(), fetchPosts()]);

// allKeyed는 키가 명시적이라 순서 버그가 없어요:
const { user, posts } = await allKeyed({
  user: fetchUser(),
  posts: fetchPosts(),
});

파라미터

  • tasks (T): 동시에 실행할 Promise(또는 일반 값)를 값으로 가진 객체예요.

반환 값

(Promise<{ [K in keyof T]: Awaited<T[K]> }>): 같은 키와 해결된 값을 가진 객체로 해결되는 Promise를 반환해요.

MIT 라이선스에 따라 배포됩니다.