Promise

김형진·2024년 2월 19일

Node.js

목록 보기
2/17

개념

프로미스는 자바스크립트에서 비동기 작업을 처리하는 객체입니다. 비동기 작업은 일반적으로 파일을 읽거나 서버와 통신하는 등의 작업을 포함합니다. 프로미스는 이러한 비동기 작업을 보다 효율적으로 다룰 수 있도록 도와줍니다.

장점

  • 가독성
    프로미스를 사용하면 비동기 코드를 보다 간결하고 읽기 쉽게 작성할 수 있습니다. 콜백 함수를 사용하는 것보다 프로미스를 사용하는 것이 코드를 이해하기 쉽습니다.

  • 에러 처리
    프로미스는 .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);
    });

0개의 댓글