minstudio

Promise (비동기의 약속 증서)

과거에는 비동기 처리 결과를 받기 위해 함수 안에 함수를 끊임없이 집어넣는 무시무시한 "콜백 지옥(Callback Hell)"에 시달렸습니다. 이를 해결하고 비동기 코문을 깔끔한 체인(.then().catch()) 형태로 연결하기 위해 등장한 표준 객체가 바로 Promise입니다.

진동벨 (Promise)의 3가지 상태

Pending (대기 중)
➡️
Fulfilled .then() 성공
Rejected .catch() 실패
// Promise: "지금 당장은 데이터가 없지만, 나중에 성공/실패 결과를 무조건 줄게" 라는 약속 증서
const orderPizza = new Promise((resolve, reject) => {
    // 2초 걸리는 피자 굽기 시뮬레이션
    setTimeout(() => {
        const isBurned = false; // 타버렸는지 여부
        if (!isBurned) {
            resolve("🍕 맛있는 피자 완성!"); // 성공 시 데이터 반환
        } else {
            reject("🔥 피자가 타버렸습니다..."); // 실패 시 에러 반환
        }
    }, 2000);
});

// 약속 증서를 받아서 .then()과 .catch()로 결과를 대기합니다.
orderPizza
    .then((result) => console.log(result)) // resolve가 호출되면 실행됨
    .catch((error) => console.error(error)) // reject가 호출되면 실행됨
실행 결과
Promise (비동기의 약속 증서) | Minstudio