flatMapAsync
非同期関数を使用して配列の各要素を変換し、結果を1レベル平坦化して新しい配列を返します。
typescript
const result = await flatMapAsync(array, callback);参照
flatMapAsync(array, callback, options?)
各要素が複数の値を返す非同期変換を実行する場合は、flatMapAsyncを使用してください。mapAsyncを呼び出した後にflat()を実行するのと同等ですが、より効率的です。
typescript
import { flatMapAsync } from 'es-toolkit/array';
// 各ユーザーの投稿を取得して1つの配列に結合します。
const users = [{ id: 1 }, { id: 2 }];
const allPosts = await flatMapAsync(users, async user => {
return await fetchUserPosts(user.id);
});
// 返り値:[post1, post2, post3, ...](すべてのユーザーの投稿が1つの配列に)
// 並行実行数を制限します。
const numbers = [1, 2, 3];
const results = await flatMapAsync(numbers, async n => await fetchRelatedItems(n), { concurrency: 2 });
// 最大2つの操作のみが同時に実行されます。各コールバック関数は配列を返す必要があり、返されたすべての配列が1つの配列にマージされます。concurrencyオプションを使用すると、並行実行を制限してサーバー負荷を管理できます。
typescript
import { flatMapAsync } from 'es-toolkit/array';
// 各カテゴリーの商品リストを取得して1つの配列にします。
const categories = ['electronics', 'books', 'clothing'];
const products = await flatMapAsync(categories, async category => await fetchProducts(category), { concurrency: 2 });
// 返り値:すべてのカテゴリーの商品を含む単一の配列パラメータ
array(readonly T[]):変換する配列です。callback((item: T, index: number, array: readonly T[]) => Promise<R[]>):各要素を配列に変換する非同期関数です。options(FlatMapAsyncOptions, オプショナル):並行実行を制御するオプションです。concurrency(number, オプショナル):同時に実行できる最大操作数です。指定しない場合、すべての操作が同時に実行されます。
戻り値
(Promise<R[]>):1レベル平坦化された変換値の配列のPromiseを返します。

