[typescript] 비동기 작업을 동시에 제한하는 방법

비동기 프로그래밍에서 동시에 실행되는 작업을 제한하는 것은 중요한 주제입니다. JavaScript와 TypeScript에서 이를 달성하기 위한 몇 가지 기술을 알아보겠습니다.

1. Promise.all 사용

Promise.all은 여러 개의 비동기 작업을 동시에 실행하고 모든 작업이 완료될 때까지 기다릴 수 있습니다.

const promises: Promise<number>[] = [promise1, promise2, promise3];
const results = await Promise.all(promises);

2. async/await과 for…of 루프 사용

async function executeSequentially(promises: Promise<any>[]) {
  for (const promise of promises) {
    await promise;
  }
}

3. RxJS의 mergeMap 및 concurrency 옵션 사용

RxJS를 사용할 경우 mergeMap을 이용하여 동시에 실행될 작업 수를 제어할 수 있습니다.

import { from } from 'rxjs';
import { mergeMap } from 'rxjs/operators';

const maxConcurrent = 5;
from(promises).pipe(
  mergeMap(promise => promise, maxConcurrent)
).subscribe();

요약

이러한 방법들을 사용하여 TypeScript에서 비동기 작업을 동시에 제한할 수 있습니다. 적합한 시나리오에 맞춰 각각의 방법을 고려하여 적절히 활용할 수 있습니다.

참고 자료: