• 카테고리

    질문 & 답변
  • 세부 분야

    풀스택

  • 해결 여부

    해결됨

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

20.05.30 20:25 작성 조회수 96

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

질문자

2020.05.30

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

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

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