Promise.all(): 사라진 참치의 사건
카테고리
프로그래밍/소프트웨어 개발
서브카테고리
개발 툴
대상자
- 초보 JavaScript 개발자 및 비동기 프로그래밍 학습자
- 중간 난이도 (Promise 기초 지식 필요)
핵심 요약
Promise.all()
은 다수의 비동기 작업을 병렬로 실행하고 모든 결과를 배열로 반환하는 함수입니다.- 하나의 Promise가 실패하면 전체 작업이 실패하여 처리가 중단됩니다.
Promise.all()
은 모든 결과가 필요한 경우 (예: 모든 데이터 수집 후 처리)에 적합합니다.
섹션별 세부 요약
1. 사건 개요
- 사건: 참치가 사라진 사건을 조사하는 Oreo 경찰의 활동
- 비동기 작업: 발자국 분석, 냄새 추적, 감시 영상 분석 3가지 작업
- 문제: 각 작업이 별도로 실행되며 시간이 많이 소요됨
2. `Promise.all()` 활용 예시
- 코드 구조:
```javascript
Promise.all([
getPawprintAnalysis(),
getScentTrailReport(),
getSurveillanceFootage()
]).then(results => { ... });
```
- 기능:
- 모든 Promise를 병렬로 실행
- 결과는 배열로 반환 (예: ["Pawprints match: Garfield", ...]
)
- 하나의 실패로 전체 실패 (예: reject("Camera offline!")
발생 시)
3. 실패 처리 예시
- 실패 시점: 감시 카메라가 라쿤의 악의적 행동으로 인해 비활성화
- 에러 핸들링:
```javascript
Promise.all([...]).catch(error => {
console.error("Investigation failed:", error);
});
```
- 결과: 모든 작업 중단 후 재조사 시도
4. `Promise.all()` 기능 요약
| 기능 | 설명 |
|------|------|
| 목적 | 병렬 실행 |
| 결과 | 모든 결과 배열 반환 |
| 실패 | 하나라도 실패 시 전체 실패 |
| 적합한 상황 | 모든 결과가 필수적인 경우 |
결론
Promise.all()
은 모든 비동기 작업 결과를 동시에 필요로 할 때 사용하세요.- 실패 시 전체 중단을 고려해 에러 처리 로직(
.catch()
)을 반드시 포함하세요. - 예:
Promise.all([fetch1(), fetch2()]).then(results => processAll(results))