[Javascript - 이론] 프로미스 / 프로미스 체이닝

프로미스란 

  • 콜백을 사용했을 때의 복잡함을 피하기 위해, ES6부터 "프로미스(promise)" 등장
  • 프로미스는 객체를 생성(제작)하는 부분과소비하는 부분으로 나뉜다.
  • 프로미스 제작 코드에서 '성공'과 '실패'를 확인한 후 소비 코드로 알려준다

프로미스 체이닝

  • then()을 사용해 여러 개의 프로미스를 연결하는 것을 '프로미스 체이닝' 이라고 한다.
  • 프로미스는 resolve와 reject를 사용해서 성공과 실패에 대한 동작을 명확하게 구별할 수 있고,
  • 함수에 계속해서 함수를 포함시키지 않기 때문에 콜백 지옥을 벗어날 수 있는 좋은 방법이다.
    • 예) A,B,C 각 실행 시간이 다르지만 A작업이 끝날 때까지 기다렸다가 B작업을 하고, 다시 B작업이 끝날 때 까지 기다렸다가 C작업을 해아 한다면?

프로미스 체이닝 예제

const pizza = () => {
    return new Promise((resolve, reject)=> {
        resolve("피자를 주문합니다.");
    })
}

const step1 = (message) => {
    console.log(message);
    return new Promise((resolve, reject) => {
        setTimeout(() => {
            resolve("피자 도우 준비");
        }, 3000);
    })
}

const step2 = (message) => {
    console.log(message);
    return new Promise((resolve, reject) => {
        setTimeout(() => {
            resolve("토핑 완료");
        }, 3000);
    })
}

const step3 = (message) => {
    console.log(message);
    return new Promise((resolve, reject) => {
        setTimeout(() => {
            resolve("굽기 완료");
        }, 3000);
    })
}

수행

pizza()
    .then(step1)
    .then(step2)
    .then(step3)
    .then(console.log)
    .then(() => console.log("피자가 준비되었습니다."));

 

댓글

Designed by JB FACTORY