Skip to content

filterAsync

배열의 각 요소를 비동기 조건 함수로 검사해서, 조건을 만족하는 요소들만 포함하는 새로운 배열을 반환해요.

typescript
const filtered = await filterAsync(array, predicate);

레퍼런스

filterAsync(array, predicate, options?)

API 호출이나 데이터베이스 조회 같은 비동기 작업으로 배열을 필터링할 때 filterAsync를 사용하세요. 일반 filter와 달리 비동기 조건 함수를 지원하고, concurrency 옵션으로 동시 실행 수를 제한할 수 있어요.

typescript
import { filterAsync } from 'es-toolkit/array';

// 사용자 상태를 API로 확인해서 활성 사용자만 필터링해요.
const users = [{ id: 1 }, { id: 2 }, { id: 3 }];
const activeUsers = await filterAsync(users, async user => {
  return await checkUserStatus(user.id);
});
// 반환: 활성 상태인 사용자들만 포함된 배열

// 동시 실행 수를 제한해서 서버 부하를 줄일 수 있어요.
const numbers = [1, 2, 3, 4, 5];
const evenNumbers = await filterAsync(numbers, async n => await isEvenAsync(n), { concurrency: 2 });
// 최대 2개의 작업만 동시에 실행돼요.

concurrency 옵션을 사용하면 외부 API 호출 횟수를 제한하거나 시스템 리소스를 효율적으로 관리할 수 있어요. 옵션을 지정하지 않으면 모든 작업이 동시에 실행돼요.

typescript
import { filterAsync } from 'es-toolkit/array';

// 동시에 최대 3개의 API 호출만 실행해요.
const items = await filterAsync(largeArray, async item => await validateItem(item), { concurrency: 3 });

파라미터

  • array (readonly T[]): 필터링할 배열이에요.
  • predicate ((item: T, index: number, array: readonly T[]) => Promise<boolean>): 각 요소를 검사하는 비동기 함수예요. 참으로 평가되는 값을 반환하면 해당 요소가 결과에 포함돼요.
  • options (FilterAsyncOptions, 선택): 동시 실행을 제어하는 옵션이에요.
    • concurrency (number, 선택): 동시에 실행할 수 있는 최대 작업 수예요. 지정하지 않으면 모든 작업이 동시에 실행돼요.

반환 값

(Promise<T[]>): 조건 함수가 참으로 평가되는 값을 반환한 요소들만 포함하는 새로운 배열의 프로미스를 반환해요.

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