MDN’s new design is in Beta! A sneak peek: https://blog.mozilla.org/opendesign/mdns-new-design-beta/

Promise.all()

현재 번역은 완벽하지 않습니다. 한국어로 문서 번역에 동참해주세요.

Promise.all(iterable) 메소드는 반복가능한 변수(배열 등)에 포함된 모든 Promise들이 통과된 경우 결정(resolve)을 하고, 그렇지 못하고 거절(reject)하는 경우 거절하는 첫번째 Promise를 의 거절 원인으로 Promise를 반환합니다.

문법

Promise.all(iterable);

 

파라미터

iterable
Array 같은 반복가능한 객체. iterable 더보기.

설명

Promise.all 은 인자로 Promise 값들로 이루어진 배열을 받아 다시 결정(resolve)된 Promise값으로 이루어진 배열을 반환한다. 반환되는 배열에 담긴 값들의 순서는 Promise 연산이 일어나는 순서가 아닌 인자로 들어온 순서를 그대로 유지한다. 만약 인자로 넘어온 배열 내 값이 Promise가 아닌 경우 자동으로 Promise.resolve 값으로 계산된다.

만약 인자로 넘어온 배열 내 값 중 어느 하나라도 거절(reject)하는 경우,  all Promise는 그 즉시 배열 내 다른 모든 Promise를 버리고 문제가 되는 값과 함께 거절한다. 만약 인자로 비어있는 배열이 들어오는 경우 즉시 결정(resolve)한다.

예제

Promise.all 사용하기

Promise.all w는 배열 내 모든 값이 결정(resolve)할 때까지 기다립니다.

var p1 = Promise.resolve(3);
var p2 = 1337;
var p3 = new Promise(function(resolve, reject) {
  setTimeout(resolve, 100, "foo");
}); 

Promise.all([p1, p2, p3]).then(function(values) { 
  console.log(values); // [3, 1337, "foo"] 
});

 

Promise.all 실패-우선 연산

Promise.all 은 배열 내 요소 중 어느 하나라도 거절(reject)하면 즉시 거절합니다. 즉 Promise.all 은 빠르게 실패합니다: 만약 timeout 이후 결정(resolve)하는 4개의 Promise를 가지고 있고, 그 중 하나가 거절(reject)하면 Promise.all 은 즉시 거절합니다.

var p1 = new Promise(function(resolve, reject) { 
  setTimeout(resolve, 1000, "one"); 
}); 
var p2 = new Promise(function(resolve, reject) { 
  setTimeout(resolve, 2000, "two"); 
});
var p3 = new Promise(function(resolve, reject) {
  setTimeout(resolve, 3000, "three");
});
var p4 = new Promise(function(resolve, reject) {
  setTimeout(resolve, 4000, "four");
});
var p5 = new Promise(function(resolve, reject) {
  reject("reject");
});

Promise.all([p1, p2, p3, p4, p5]).then(function(value) { 
  console.log(value);
}, function(reason) {
  console.log(reason)
});

//From console:
//"reject"

명세

Specification Status Comment
ECMAScript 2015 (6th Edition, ECMA-262)
The definition of 'Promise.all' in that specification.
Standard Initial definition in an ECMA standard.
ECMAScript 2017 Draft (ECMA-262)
The definition of 'Promise.all' in that specification.
Draft  

브라우저 호환성

특징 Chrome Firefox (Gecko) Internet Explorer Opera Safari
기본 지원 32 29.0 (29.0) No support 19 7.1
특징 Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile Chrome for Android
기본 지원 No support 29.0 (29.0) No support No support 8 32

더 보기

문서 태그 및 공헌자

 이 페이지의 공헌자: hoony
 최종 변경: hoony,