더북(TheBook)

new Promise로 프로미스를 생성할 수 있으며, 안에 resolvereject를 매개변수로 갖는 콜백 함수를 넣습니다. 이렇게 만든 promise 변수에 thencatch 메서드를 붙일 수 있습니다. 프로미스 내부에서 resolve가 호출되면 then이 실행되고, reject가 호출되면 catch가 실행됩니다. finally 부분은 성공/실패 여부와 상관없이 실행됩니다.

resolvereject에 넣어준 인수는 각각 thencatch의 매개변수에서 받을 수 있습니다. 즉, resolve('성공')이 호출되면 thenmessage'성공'이 됩니다. 만약 reject('실패')가 호출되면 catcherror'실패'가 되는 것입니다. condition 변수를 false로 바꿔보면 catch에서 에러가 로깅됩니다.

프로미스를 쉽게 설명하자면, 실행은 바로 하되 결괏값은 나중에 받는 객체입니다. 결괏값은 실행이 완료된 후 then이나 catch 메서드를 통해 받습니다. 위 예제에서는 new Promisepromise.then 사이에 다른 코드가 들어갈 수도 있습니다. new Promise는 바로 실행되지만, 결괏값은 then을 붙였을 때 받게 됩니다.

then이나 catch에서 다시 다른 then이나 catch를 붙일 수 있습니다. 이전 thenreturn 값을 다음 then의 매개변수로 넘깁니다. 프로미스를 return한 경우 프로미스가 수행된 후 다음 then이나 catch가 호출됩니다.

promise
  .then((message) => {
    return new Promise((resolve, reject) => {
      resolve(message);
    });
  })
  .then((message2) => {
    console.log(message2);
    return new Promise((resolve, reject) => {
      resolve(message2);
    });
  })
  .then((message3) => {
    console.log(message3);
  })

  .catch((error) => {
    console.error(error);
});
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.