Javascript – Promise 예외처리
Promise 예외처리
ㆍcatch 를 통한 오류 처리
let myPromise1 = new Promise( (resolve , reject) => {
let value = 0;
setTimeout( ()=> { resolve(value);} , 1000);
// promise 를 리턴하지 않아도 됨,, myPromise1 자체가 Promise 객체기 때문에
// myPromise1.then 호출가능
})
// 반드시 리턴을 해야하는경우
// myPromise1 는 함수이기때문에 promise 객체와 관련없음 리턴해야줘야함
/*
let myPromise1 = () => {
let value = 0;
let innerPromise = new Promise ( (resolve , reject) =>
{
setTimeout ( ()=> {resolve(value);} , 1000);
}
return innerPromise
}
*/
let myPromise2 = (v) => {
return new Promise( (resolve , reject) =>{
setTimeout( () => { if (v == 0) reject( new Error(“that value is Zero”));} , 1000);
})
}
let myPromise3 = (v) => {
return new Promise ( (resolve ,reject) => {
setTimeout( () => { v = v + 30; resolve(v); },1000)
});
}
let myPromise4 = (v) => {
return new Promise ( (resolve , reject) => {
setTimeout( () => { v=v+50; resolve(v)}, 1000 )
});
}
[CONSUMER]
myPromise1
.then( (v) => {
console.log(v);
return myPromise2(v); // reject 콜백을 실행하는 프로미스 == catch 호출
})
.catch( (v) => // catch 를 reject 호출한 프로미스 바로 하단에 작성하여
{ // 예외처리하고 다음 then 으로 넘겨 처리를 이어감
console.log(“Error occurred “)
v = 100; // 오류는 v 를 100으로 초기화 하고 다음 then 에 return 하여 처리 연결
return v;
})
.then( (v) => {
console.log(v);
return v;
})
.then(myPromise3) // .then (v => myPromise3(v)) 와 같음
.then(myPromise4)
.then( (v) =>{
console.log(“final value is ” + v);
})