forEachAsync
배열의 각 요소에 대해 비동기 함수를 실행해요.
typescript
await forEachAsync(array, callback);레퍼런스
forEachAsync(array, callback, options?)
배열의 각 요소에 대해 부수 효과를 일으키는 비동기 작업을 수행할 때 forEachAsync를 사용하세요. 일반 forEach와 달리 모든 비동기 작업이 완료될 때까지 기다리는 프로미스를 반환해요.
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 });
// 한 번에 하나씩만 업로드돼요.파라미터
array(readonly T[]): 반복할 배열이에요.callback((item: T, index: number, array: readonly T[]) => Promise<void>): 각 요소에 대해 실행할 비동기 함수예요.options(ForEachAsyncOptions, 선택): 동시 실행을 제어하는 옵션이에요.concurrency(number, 선택): 동시에 실행할 수 있는 최대 작업 수예요. 지정하지 않으면 모든 작업이 동시에 실행돼요.
반환 값
(Promise<void>): 모든 작업이 완료되면 이행되는 프로미스를 반환해요.

