Promise All

sang hyeok Lee·2022년 4월 10일
0

Promise All

Promise All은 Promise 배열들을 받는데 그 배열들 모두가 성공을 해야 성공을 반환한다.

const promise1 = Promise.resolve(3);
const promise2 = 42;
const promise3 = new Promise((resolve, reject) => {
  setTimeout(resolve, 100, 'foo');
});

Promise.all([promise1, promise2, promise3]).then((values) => {
  console.log(values);
});
// expected output: Array [3, 42, "foo"]

promise1과 promise2와 promise3 모두가 성공을 하고 있다. 그리고 Promise.all에 promise1, promise2, promise3을 받음 배열을 넣어주고 배열에 요소들이 모두 성공을 하면 then을 실행시킨다. 그래서 위 예시에서도 [3,42, "foo"] 가 잘 나오고 있다.

Promise.all은 배열받은 요소 중 하나라도 실패한면 실패를 반환한다.

var p1 = new Promise((resolve, reject) => {
  setTimeout(() => resolve('하나'), 1000);
});
var p2 = new Promise((resolve, reject) => {
  setTimeout(() => resolve('둘'), 2000);
});
var p3 = new Promise((resolve, reject) => {
  setTimeout(() => resolve('셋'), 3000);
});
var p4 = new Promise((resolve, reject) => {
  setTimeout(() => resolve('넷'), 4000);
});
var p5 = new Promise((resolve, reject) => {
  reject(new Error('거부'));
});


// .catch 사용:
Promise.all([p1, p2, p3, p4, p5])
.then(values => {
  console.log(values);
})
.catch(error => {
  console.log(error.message)
});

위 예시를 보면 p1, p2, p3, p4는 모두 성공을 하고 오직 p5만 실패를 했다. 그리고 이것들을 배열로 Promise.all에 넣어주고 있다. 4개가 모두 성공을 했지만 P5가 실패를 했기 때문에 Promise.all은 then을 실행하는 것이 아니라 catch를 실행한다. 즉 실패를 반환한다. 그래서 Promis.all이 성공을 하려면 배열의 모든 요소가 성공을 해야 한다.

profile
개발자 되기

0개의 댓글