callback 지옥에서 탈출하기

목표


Promise의 개념에 대해 알아본다.

비동기 작업의 3가지 상태


  1. 대기 상태 - Pending 비동기 작업이 모종의 이유로 대기중인 상태
  2. 성공 - Fulfilled 작업이 성공적으로 이루어진 상태
  3. 실패 - Rejected 작업이 실패로 끝난 상태

상태변화 2가지

resolve&reject 예제


다음 코드를 살펴보자.

function isPositive(num, resolve, reject) {
  setTimeout(() => {
    if (typeof num === "number") {
      //resolve
      resolve(num >= 0 ? "양수 또는 0" : "음수");
    } else {
      //reject
      reject("숫자가 아님");
    }
  }, 1000);
}

isPositive(
  10,
  (res) => {
    console.log("성공:", res);
  },
  (err) => {
    console.log("실패:", err);
  }
);

isPositive 함수는 검사할 값과 콜백 함수인 resolve 함수, reject 함수를 넘겨준다.

Promise 예제


위의 코드에서 Promise를 적용시켜보자.