비동기 프로그래밍의 진화
JavaScript의 비동기 처리는 콜백에서 시작하여 Promise, async/await로 발전해왔습니다.
Promise.all vs Promise.allSettled
Promise.all은 하나라도 실패하면 전체가 실패하지만, Promise.allSettled는 모든 Promise가 완료될 때까지 기다립니다.
const results = await Promise.allSettled([
fetch("/api/users"),
fetch("/api/posts"),
fetch("/api/comments")
]);
const successful = results.filter(r => r.status === "fulfilled");에러 핸들링 베스트 프랙티스
async/await를 사용할 때는 try-catch를 적절히 활용하되, 에러 경계를 명확히 설정하는 것이 중요합니다.
| 패턴 | 용도 | 장점 |
|---|---|---|
| Promise.all | 병렬 실행, 모두 성공 필요 | 빠른 실패 감지 |
| Promise.allSettled | 병렬 실행, 부분 실패 허용 | 안정적 처리 |
| Promise.race | 타임아웃 구현 | 응답 시간 제어 |