예를 들어 위의 예와 같이 여러 개의 가져오기 호출이 있고 한 호출이 실패하는 경우 다른 호출은 계속 실행되지만 Promise.all은 더 이상 호출하지 않습니다. 그들은 아마 정착 하지만 결과 무시 됩니다. 간단한 예를 들어 봅시다. app.js라는 하나의 파일을 만들고 다음 코드를 작성해 보겠습니다. 예를 들어 여러 사용자에 대한 정보를 가져오려고 합니다. 한 요청이 실패하더라도 다른 요청에 관심이 있습니다. 위의 예는 간단합니다. 그러나 그것은 매우 수행되지 않습니다. 스택이 너무 무거워지고 한 시점에서 JavaScript는 서버를 죽일 수있는 엄청난 수의 열린 HTTP 연결을 갖게됩니다. 위의 예에서 Promise.all은 2000ms 이후에 해결되고 출력은 배열로 콘솔화됩니다. 다음 예제에서는 Promise.all: Promise.all의 비동기성(또는 전달된 전달이 비어 있는 경우 동기화)을 보여 줍니다. 예를 들어, 시간 시간 이후에 해결되는 네 가지 약속과 즉시 거부하는 약속 하나를 전달하면 Promise.all은 즉시 거부됩니다. 물론 API 요청을 하는 시간에 따라 달라지므로 이 예제는 구성됩니다.

그러나 약속 생성을 함수로 이동하면 일반적으로 실제 코드에서 이 문제를 처리하는 방법과 비슷하게 조금 더 잘 수행할 수 있습니다. 더 나은 예를 들어 http 클라이언트처럼 작동하는 함수 apiRequest()를 만들었습니다. GitHub 사용자 배열에 대 한 사용자 정보를 이름으로 가져오는 더 큰 예 (ids에 의해 상품의 배열을 가져올 수 있습니다., 논리는 동일): 여기, 우리는 세 가지 약속을 정의 했습니다. 그런 다음 세 가지 약속을 기반으로 단일 약속을 반환하는 Promise.all() 방법을 정의했습니다. 이 예제에서는 세 가지 약속이 모두 해결되므로 Promise.all() 함수는 세 약속의 출력을 배열 형식으로 해결하고 출력합니다. 예를 들어 10개의 약속(네트워크 호출 또는 데이터베이스 연결을 수행하는 비동기 작업)이 있다고 가정합니다. 모든 약속이 해결되거나 모든 약속이 해결 될 때까지 기다려야할 때를 알아야합니다. 그래서 당신은 Promise.all에 모든 열 약속을 전달하고 있습니다. 그런 다음 Promise.all 자체가 10개의 약속이 모두 해결되면 해결될 것입니다. 위의 예에서 Promise.all() 블록 내에서 이러한 오류를 catch하는 경우 약속이 오류로 거부된 다음 각 약속의 값을 표시합니다. 출력은 다음과 입니다. 위의 예에서 두 번째 약속이 거부되어 최종 출력에 오류가 발생합니다.

위의 예에서 Promise.all은 모든 약속이 해결될 때까지 기다린다는 것이 분명합니다. 예를 들어 여러 URL을 병렬로 다운로드하고 모든 URL이 완료되면 콘텐츠를 처리합니다.