-
Promise ResultRecursive
Promise결과에서 Promise를 다시 사용하여(비동기 작업 완료 후 후속 비동기 작업 예약 구조)결과 처리에서 resolve, reject중 하나의 결과처리는 한만 정의하여 공동 처리 되도록 예약 가능하다. 결과처리함수에서 return값이 전달되는 구조이기에 가능하다( 참고: Promise Ex 결과(resolve, reject)와 return값 )
아래 코드는 어느 단계의 Promise중에 reject이 발생하던 "return '.catch return~';"라고 정의한 코드에서 모두 처리 된다.
PromiseResultRecursive.ts
{ async function Pm1(name:string, rst:boolean) { let rst1 = await new Promise((resolve, reject)=>{ if(rst) { resolve(name+".resolve~"); } else { reject(name+".reject~"); } }); return rst1; } async function Main1() { console.log("root start"); let pmt1 = await Pm1("Pmt1", true) .then((resolve)=>{ //console.log("then " + resolve); //return ".then return~"; return Pm1("Pmt2", true) .then(()=>{ return Pm1("Pmt3", false) .then(()=>{ return Pm1("Pmt4", true) }); }); }).catch((reject)=>{ console.log("catch " + reject); return ".catch return~"; }); console.log("root rst " + await pmt1); console.log("root end"); } Main1(); }
root start catch Pmt3.reject~ root rst .catch return~ root end
'Html Css JavaScript' 카테고리의 다른 글
html layout ex1 (float 적용) (0) 2023.01.22 Promise Ex 결과(reject,resolve) 순서 (0) 2023.01.22 Promise Ex 결과(resolve, reject)와 return값 (0) 2023.01.22 Promise Ex 결과(resolve, reject) 없을 경우 (0) 2023.01.22 async await Ex2 (0) 2023.01.22 Bootstrap (0) 2023.01.21 bootstrap Ex navs (0) 2023.01.21 Alert message bar Ex (0) 2023.01.21