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を返します。

