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);
    })

 

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다