
개념
프로미스는 자바스크립트에서 비동기 작업을 처리하는 객체입니다. 비동기 작업은 일반적으로 파일을 읽거나 서버와 통신하는 등의 작업을 포함합니다. 프로미스는 이러한 비동기 작업을 보다 효율적으로 다룰 수 있도록 도와줍니다.
장점
가독성
프로미스를 사용하면 비동기 코드를 보다 간결하고 읽기 쉽게 작성할 수 있습니다. 콜백 함수를 사용하는 것보다 프로미스를 사용하는 것이 코드를 이해하기 쉽습니다.
에러 처리
프로미스는 .catch() 메소드를 사용하여 오류를 처리할 수 있습니다. 이를 통해 오류가 발생했을 때 적절한 방식으로 처리할 수 있습니다.
체이닝
프로미스를 사용하면 여러 개의 비동기 작업을 연결하여 순차적으로 실행할 수 있습니다. 이를 통해 콜백 지옥(callback hell)을 피할 수 있습니다.
예제
// 주문 함수 정의
function placeOrder(item) {
return new Promise(function(resolve, reject) {
setTimeout(function() {
// 주문이 성공적으로 처리되었다고 가정
const orderID = Math.floor(Math.random() * 1000); // 임의의 주문 번호 생성
resolve(orderID); // 성공 시 주문 번호를 반환
}, 2000); // 2초 후에 주문이 처리됨
});
}
// 배송 함수 정의
function deliverOrder(orderID) {
return new Promise(function(resolve, reject) {
setTimeout(function() {
// 배송이 성공적으로 처리되었다고 가정
const trackingID = Math.floor(Math.random() * 10000); // 임의의 추적 번호 생성
resolve(trackingID); // 성공 시 추적 번호를 반환
}, 3000); // 3초 후에 배송이 처리됨
});
}
// 상품 주문하기
console.log("주문을 진행합니다...");
placeOrder("책")
.then(function(orderID) {
console.log("주문이 완료되었습니다. 주문 번호:", orderID);
return deliverOrder(orderID); // 주문이 성공했으면 배송 요청
})
.then(function(trackingID) {
console.log("상품이 성공적으로 배송되었습니다. 추적 번호:", trackingID);
})
.catch(function(error) {
console.error("문제가 발생했습니다:", error);
});