pr에는 Promise객체가 담겨 있으므로 result값을 알수 있음. then함수의 첫번째 인자로는 성공했을때 실행되는 함수가 오고 그 인자로는 Promise객체의 property인 result가 오게됨. 반대로 두번째 인자에는 실패했을때 실행되는 함수가 도게 되고 그 함수의 인자로는 error가 전달됨. then함수를 실제로 작성하면 아래와 같은 모습임이 예에서는 setTimeout함수안의 함수로 resolve가 왔으므로 pr.then의 두번째 인자인 function(err){}가 실행될 수없고 function(result)만이 실행되게 만들어 놓음. 이렇게 기본적으로 then함수는 2개의 인자를 받지만 다음과 같이 catch문을 사용하면 오직 하나의 인자만 받도록 구성할 수도 있음. 이 함수와 아래의 함수는 동일하게 동작함.이렇게 함수를 구성하면 혹시나 function(result){}함수를 실행하면서 발생하는 에러도 한번에 잡을 수 있게 되는 효과가 있음. 또한 우측과 같이 작성하는 것이 가독성이 더 좋음.
알고 있듣이 finally는 실패하던 성공하던 무조건 실행됨.
constpt=newPromise((resolve, reject)=>{
setTimeout(() => {
//바로 이 자리에 실패할 수도 있고 성공할수도 있는 내용이 오게됨. 만약 성공하면 조건문이용해서 그 자리에 resolve함수호출하는 것이고
//실패하면 그 분기문 자리에 reject함수 놓으면 됨.
// const arr="This will be transported";
// resolve(arr);
// // reject(new Error("error발생!!!"))
}, 1500);
});
console.log("Start!!")
pt.then(result=>{//resolve함수를 호출하면서 전달된 인자인arr이 result로 전달되는 것!즉, 위에서와 같이 resolve는 항상 인자와 함께 호출되어야 함.