## Promise.all
[Promise.all() - JavaScript \| MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/all)
- 여러 개의 Promise를 병렬로 실행하고, 모든 작업이 성공해야 결과를 반환하는 메서드
- Promise 중 하나라도 reject되면 전체가 reject
```javascript
const [advertises, posts] = awiat Promise.all([
fetchAdvertises(),
fetchPosts()
]);
```
## 활용 예시
비동기 작업 간 의존성이 없고, 결과를 한꺼번에 사용해야 할 때 유용하게 사용할 수 있다.
- 여러 API에서 데이터 받아서 한 페이지에 동시에 렌더링할 때
```javascript
// 개별 지역의 날씨를 각각 불러와 한번에 보여줄 때 (모두 불러와야 성공)
const weatherData = await Promise.all([
getWeather('서울'),
getWeather('대구')
]);
```
- 여러 파일을 개별적으로 처리해야 할 때
```javascript
// 배열로 전달된 이미지들을 모두 개별적으로 업로드할 때 (모두 업로드해야 성공)
const uploadResults = await Promise.all(
images.map(image => uploadImage(image))
);
```
- 여러 검증 작업
```javascript
// 여러 검증을 동시에 진행할 때 (모두 통과해야 성공)
const [nameValid, emailValid] = await Promise.all([
validateName(name),
validateEmail(email)
]);
```
## 주의점
`Promise.all`은 모든 결과가 필요할 때 사용한다.
만약에 하나라도 실패하는 경우에는 전체가 reject되기 때문에 일부 실패하더라도 성공한 Promise의 결과가 필요한 경우에는 [[Promise.allSettled]] 같은 다른 메서드를 사용한다.
## 관련 문서
- [[Promise.allSettled]] - 일부 실패를 허용하면서 전체 결과를 수집하고 싶을 때
- [[async · await]] - 순차 실행의 경우