-
Promise메인(호출시 함수인자로 전달된 callback함수)은 함수를 실행 시켜서 resolve, reject의 결과를 가려내기 위한 작업을 한다. 그래서 그 속에서 return값은 전달되지 않는다. 또한 결과입력이 없으면 처리가 안 끝난 것으로 간주하고 대기한다( 참고: Promise Ex 결과(resolve, reject) 없을 경우 ).
Promise메인에서 결과가 입력되면 처리가 끝난 뒤 결과에 대당하는 결과 처리 함수(then, catch)가 호출 된다. 결과처리 함수의 return값은 외부로 전달 할 수 있다. 그래서 결과처리함수에서 Promise를 만들어 return에 넣어 보내면 재귀적 Promise처리 관계가 되기에 외부에서는 마지막 결과(resolve, reject)를 받아서 최종 처리 결과처럼 처리가 가능하다( 참고: Promise Ex 결과에서 재귀적 사용 )
PromiseResult.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 name+".main return~"; }).then((resolve)=>{ console.log("then " + resolve); return name+".then return~"; }).catch((reject)=>{ console.log("catch " + reject); return name+".catch return~"; }); return rst1; } async function Main1() { console.log("root start"); let pmt1 = Pm1("Pmt1", true) let pmt2 = Pm1("Pmt2", false) console.log("root rst " + await pmt1); console.log("root rst " + await pmt2); console.log("root end"); } Main1(); }
root start then Pmt1.resolve~ catch Pmt2.reject~ root rst Pmt1.then return~ root rst Pmt2.catch return~ root end
'Html Css JavaScript' 카테고리의 다른 글
jQuery 설치 (0) 2023.01.23 Bootstrap 적용 준비 (0) 2023.01.22 html layout ex1 (float 적용) (0) 2023.01.22 Promise Ex 결과(reject,resolve) 순서 (0) 2023.01.22 Promise Ex 결과(resolve, reject) 없을 경우 (0) 2023.01.22 Promise Ex 결과에서 재귀적 사용 (0) 2023.01.22 async await Ex2 (0) 2023.01.22 Bootstrap (0) 2023.01.21