FrontEnd/Javascript
프로미스(promise)
NandaNanda
2024. 2. 7. 23:23
https://www.youtube.com/watch?v=3Ao3OroqQLQ&list=PLZKTXPmaJk8JZ2NAC538UzhY_UNqMdZB4&index=16
콜백함수란(callback)? 어떤 일이 완료된 후 실행되는 함수(=어떤 행위에 뒤이어 연이어 실행되는 함수). 즉, resolve는 성공한 후 실행되는 함수이므로 콜백함수이고 reject역시 실패한 후에 실행되는 함수이므로 콜벡함수이다.
여태까지한 코드(위의 것들)는 판매자의 코드임.
===========================================================================================
지금부터는 소비자의 코드.
const pt=new Promise((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는 항상 인자와 함께 호출되어야 함.
console.log(result);
}).catch((err)=>{
console.log(err);
}).finally(
function(){
console.log("끝~~");
}
);
위의 pt.then이하는 아래와 같이 바꿀수 있음.
const pm=new Promise((resolve, failed)=>{
setTimeout(() => {
let str1="빵이 성공적으로 만들어 졌어요";
let str2="빵을 만드는 데 실패했어요";
let prepared=1;
if(prepared){
resolve(str1);
}else{
resolve(str2);
}
}, 3000);
});
pm.then((result)=>{
console.log(result);
console.log("네~찾으러 갈께요")
}).catch((err)=>{
console.log("네, 다시 시도해 주세요");
}).finally(
console.log("집으로는 무조건 Go back")
)