인프런 커뮤니티 질문&답변

SILENMUS님의 프로필 이미지
SILENMUS

작성한 질문수

Node.js 교과서 - 기본부터 프로젝트 실습까지

[ async/await ] - 다음 then절로 넘어가지 않게 하기.

해결된 질문

작성

·

158

0

안녕하세요 강사님

패스포트 로그인 구현중 입니다.

async,await에서 특정 조건일때 process를 멈추게 하고 싶습니다.

---------------------------------------------------------------

 await User.findOne({ where: { id:global.user_id } })
    .then((user)=>{
     return bcrypt.compare(password, user.password); // 찾은 아이디의 비번과 front에서 받은 비번 비교
    })
    .then((result)=>{
      if(result === false){ // 비밀번호가 일치하지 않는다면, 
        res.status(403).send("비밀번호가 틀립니다.");
        ⛔ 여기서 멈추게 하고 싶습니다 ⛔
        }else{ // 비밀번호가일치한다면
        return true;
      }
    })
    .then((result)=>{
      
      어떤 다른 로직
      
    })
    .catch((error) => {
      console.error(error);
      next(error);
    });

---------------------------------------------------------------------

저는 res.send를 하면 동기 process가 종료될줄알았는데 그거와는 별개로 

밑의 모든 then절의 코드가 실행되었습니다. 

특정조건일 때 동기작업을 멈출 수 있는 방법이 있을까요??

답변 3

1

제로초(조현영)님의 프로필 이미지
제로초(조현영)
지식공유자

다음 then 말씀하시는건가요? 그건 throw new Error로 catch로 보내야합니다.

1

제로초(조현영)님의 프로필 이미지
제로초(조현영)
지식공유자

return으로 다음 함수 부분이 실행되지 않게 하시면 됩니다.

0

SILENMUS님의 프로필 이미지
SILENMUS
질문자

then((result)=>{
      if(result === false){ // 비밀번호가 일치하지 않는다면, 
        res.status(403).send("비밀번호가 틀립니다.");
        return;
        }else{ // 비밀번호가일치한다면
        return true;
      }
    })

이런식으로 넣었는데도 계속 내려가네요 ~~;

제가 뭘 잘못한걸까요 =_=;;

SILENMUS님의 프로필 이미지
SILENMUS

작성한 질문수

질문하기