전달받은 프로미스들 전체가 다
resolve
되어야 Promise.all이 resolve 되고, 하나라도 실패하는 경우에는 reject 처리된다.테스트
에러가 발생했더라도 개별 프로미스 내에서 에러처리 까지 다 해버리는 경우에는 실패로 처리되지 않는다.
( error 객체가 내부 catch에 의해서 수신되었기 때문 )
const promise1 = async () => { try{ console.log("promise1 try"); throw new Error("promise1 error"); } catch{ console.log("promise 1 error"); } } const promise2 = async () => { try{ console.log("promise2 try"); throw new Error("promise1 error"); } catch{ console.log("promise 1 error"); } } Promise.all([promise1(), promise2()]).then(()=>console.log("success")).catch(()=>console.log("fail")) /// Success 가 뜬다.
const promise1 = async () => { try{ console.log("promise1 try"); throw new Error("promise1 error"); } catch{ console.log("promise 1 error"); } } const promise2 = async () => { try{ console.log("promise2 try"); throw new Error("promise1 error"); } } Promise.all([promise1(), promise2()]).then(()=>console.log("success")).catch(()=>console.log("fail")) /// Fail이 뜬다.