forEachAsync
配列の各要素に対して非同期関数を実行します。
typescript
await forEachAsync(array, callback);参照
forEachAsync(array, callback, options?)
配列の各要素に対して副作用を伴う非同期操作を実行する場合は、forEachAsyncを使用してください。通常のforEachとは異なり、すべての非同期操作が完了したときに解決されるPromiseを返します。
typescript
import { forEachAsync } from 'es-toolkit/array';
// すべてのユーザー情報を更新します。
const users = [{ id: 1 }, { id: 2 }, { id: 3 }];
await forEachAsync(users, async user => {
await updateUser(user.id);
});
// すべてのユーザー更新が完了しました。
// 並行実行数を制限します。
const items = [1, 2, 3, 4, 5];
await forEachAsync(items, async item => await processItem(item), { concurrency: 2 });
// 最大2つの項目のみが同時に処理されます。concurrencyオプションを使用すると、並行実行を制限してサーバーやデータベースへの負荷を制御できます。ログ記録、ファイルアップロード、データベース更新など、値を返さない操作に便利です。
typescript
import { forEachAsync } from 'es-toolkit/array';
// ファイルを順次アップロードします。
const files = ['file1.txt', 'file2.txt', 'file3.txt'];
await forEachAsync(files, async file => await uploadFile(file), { concurrency: 1 });
// 一度に1つずつアップロードされます。パラメータ
array(readonly T[]):反復処理する配列です。callback((item: T, index: number, array: readonly T[]) => Promise<void>):各要素に対して実行する非同期関数です。options(ForEachAsyncOptions, オプショナル):並行実行を制御するオプションです。concurrency(number, オプショナル):同時に実行できる最大操作数です。指定しない場合、すべての操作が同時に実行されます。
戻り値
(Promise<void>):すべての操作が完了したときに解決されるPromiseを返します。

