## 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]] - 순차 실행의 경우