처음 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) => { // 세 번째 콜백
            // 생략
          });
        });
      });
    }

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

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