Javascript/GMA(2302~)
23.04.27 자바스크립트 비동기 처리방식 -프로미스 객체
hyerin1201
2023. 4. 27. 22:25
프로미스객체 : 무분별한 콜백함수 사용에 부작용을 최소화하기 위해 *내장객체이다
promise( ) => 매개변수 : 조건값이 true 일때 실행할 함수와, 조건값이 false일때 실행할 함수를 가지고 있음.
프로미스 객체의 진행 단계 (3가지)
1.pendding : 프로미스 객체를 만들고 대기중인 상태
2.fullfilled : 프로미스 객체를 활용해서 트루값에 도착한 상태
3.rejected : 프로미스 객체를 활용해서 false값에 도착한 상태
프로미스 객체
let likePizza = true;
const pizza = new Promise((resolve, reject) => {
if(likePizza) {
resolve("피자를 주문합니다.")
} else {
reject("피자를 주문하지 않습니다.")
}
});
pizza
.then(
(result) => console.log(result)
)
.catch(
(err) => console.log(err)
).finally(
( ) => console.log("완료")
);
HTML
<body>
<div id="container">
<div id="start"></div>
<div id="end"></div>
</div>
</body>
CSS
#container {
width: 300px;
margin: 20px auto;
}
.active {
background-color: #222;
color: #fff;
padding: 10px 20px;
}
.done {
text-decoration: line-through;
color: #999;
font-size: 0.9em;
font-style: italic;
}
Javascript
let coffee = prompt("어떤 커피를 주문하시겠습니까?", "아메리카노");
const order = new Promise((resolve, reject) => {
if(coffee != null && coffee !=""){
document.querySelector("#start").innerText = `${coffee} 주문접수`;
setTimeout(() => {
resolve(coffee);
}, 3000)
} else {
reject("커피를 주문하지 않았습니다.")
}
});
function display(coffee) {
document.querySelector("#end").innerText = `${coffee} 준비완료 ☕`;
document.querySelector("#end").classList.add("active");
document.querySelector("#start").classList.add("done");
}
function showErr(err) {
document.querySelector("#start").innerText = err;
}
order
.then(display)
.catch(showErr);