const promise1 = Promise.resolve('성공1'); const promise2 = Promise.resolve('성공2'); Promise.all([promise1, promise2]) .then((result) => { console.log(result); // ['성공1', '성공2']; }) .catch((error) => { console.error(error); });
Promise.resolve는 즉시 resolve하는 프로미스를 만드는 방법입니다. 비슷한 것으로 즉시 reject하는 Promise.reject도 있습니다. 프로미스가 여러 개 있을 때 Promise.all에 넣으면 모두 resolve될 때까지 기다렸다가 then으로 넘어갑니다. result 매개변수에 각각의 프로미스 결괏값이 배열로 들어 있습니다. Promise 중 하나라도 reject가 되면 catch로 넘어갑니다. 다만, 여러 프로미스 중 어떤 프로미스가 reject되었는지는 알 수 없습니다.
정확히 어떤 프로미스에서 reject되었는지 알기 위해서는 Promise.all 대신 Promise.allSettled를 사용해야 합니다.
const promise1 = Promise.resolve('성공1'); const promise2 = Promise.reject('실패2'); const promise3 = Promise.resolve('성공3'); Promise.allSettled([promise1, promise2, promise3]) .then((result) => { console.log(result); /* [ * { status: 'fulfilled', value: '성공1' }, * { status: 'rejected', reason: '실패2' }, * { status: 'fulfilled', value: '성공3' } * ] */ }) .catch((error) => { console.error(error); });