Promise.all
은 한 번에 하나의 반환값만을 가지는 Promise
로 여러 개의 연속적인 비동기 결과를 얻어낼 때 유용하게 사용할 수 있는 메서드이다. 일반적으로 다음 코드를 실행하기 전 연관된 비동기 작업들이 모두 끝나야 하는 경우 묶어서 사용한다.
A
Promise와 B
Promise를 하나로 묶어서 비동기 작업을 실행할 수 있게 되는데, A가 성공해도 B가 실패하면 Promise.all
은 거부된다. 여기서 Promise.allSettled()
를 사용하면 성공/실패 여부에 상관없이 주어진 Promise
가 모두 완료될 때까지 기다리고 완료된다면 모든 Promise
의 결과값을 반환한다.
사용법은 간단하다.
여러 개의 Promise
들이 있다면, 배열에 담아서 Promise.all()
의 인자로 넣어주면 된다.
예시는 아래와 같다.
const a = Promise.resolve(4);
const b = 15;
const c = new Promise((resolve, reject) => {
setTimeout(() => {
resolve("resolve!");
}, 1000);
});
Promise.all([a, b, c]).then((result) => {
console.log(result);
});
결과: [4, 15, "resolve!"]
Promise
가 아닌 값이 들어있다면 무시는 하지만, 리턴 배열에는 포함된다.
Promise.all
은 기본적으로 비동기적으로 작동하지만, 주어진 인자가 빈 경우엔 동기적으로 작동한다.