[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에서 비동기 작업을 동시에 제한할 수 있습니다. 적합한 시나리오에 맞춰 각각의 방법을 고려하여 적절히 활용할 수 있습니다.
참고 자료: