더북(TheBook)

처음 then에서 messageresolve하면 다음 then에서 message2로 받을 수 있습니다. 여기서 다시 message2resolve한 것을 다음 then에서 message3으로 받았습니다. 단, then에서 new Promisereturn해야 다음 then에서 받을 수 있다는 것을 기억하세요.

이것을 활용해서 콜백을 프로미스로 바꿀 수 있습니다. 다음은 콜백을 쓰는 패턴 중 하나입니다. 나중에 8장을 배우면 이 코드를 더 정확하게 이해할 수 있습니다. 이를 프로미스로 바꿔보겠습니다.

function findAndSaveUser(Users) {
  Users.findOne({}, (err, user) => { // 첫 번째 콜백
    if (err) {
      return console.error(err);
    }
    user.name = 'zero';
    user.save((err) => { // 두 번째 콜백
      if (err) {
        return console.error(err);
      }
      Users.findOne({ gender: 'm' }, (err, user) => { // 세 번째 콜백
        // 생략
      });
    });
  });
}

콜백 함수가 세 번 중첩되어 있습니다. 콜백 함수가 나올 때마다 코드의 깊이가 깊어집니다. 각 콜백 함수마다 에러도 따로 처리해줘야 합니다. 이 코드는 다음과 같이 바꿀 수 있습니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.