async function loginController() {
try {
const a = await loginService().catch(error => {
throw new CustomErrorHandler({ code: 101, message: 'a failed', error: error });
});
const b = await someUtil().catch(error => {
throw new CustomErrorHandler({ code: 102, message: 'b failed', error: error });
});
//someoeeoe
if (a && b) console.log('no one failed');
} catch (error) {
if (!(error instanceof CustomErrorHandler)) {
console.log('gen error', error);
}
}
}
function loginService() {
return new Promise((resolve, reject) => {
resolve('hahaha');
//reject("nonono");
});
}
loginController();
function someUtil() {
return new Promise((resolve, reject) => {
resolve('hahah');
reject('nonono');
});
}
function CustomErrorHandler(someObject) {
console.log(someObject);
}
try / catch
의 중첩을 줄일 수 있을 뿐만 아니라 Promise.all
의 제약 사항 중 하나인 reject가 하나라도 나오면 바로 다 실패처리된다 는 문제를 극복할 수 있다.
저렇게 처리된 Promise 객체들은 Promise.all
로 처리했을 때 에러가 발생할 경우 resolve된 에러가 배열의 요소로 담겨 나올 것이기 때문
loginController의 catch문의 gen error은 무슨 의미인가요?