• 카테고리

    질문 & 답변
  • 세부 분야

    풀스택

  • 해결 여부

    미해결

login 제너레이터에서 put앞에 yield를 안쓴다면에 대한 질문

20.04.28 01:09 작성 조회수 122

0

안녕하세요, 

function* login() {
try {
yield delay(2000);
yield put({ type: LOG_IN_SUCCESS });
} catch (e) {
yield put({ type: LOG_IN_FAILURE });
}
}

위 코드에서 put앞에 yield를 쓰지 않을 경우, 로그인 버튼을 누르면 REQUEST 무한대기 상태에 빠집니다. (loading 아이콘 뱅글뱅글 돌아가면서)

위 코드와 같이 yield를 추가해줬을때는 제대로 동작을 하는데요.

코드 동작여부와 별개로 궁금하여 질문드립니다.

yield를 쓰지않았을때 무한로딩이 되는 이유가 뭘까요

yield가 마지막에 없더라도 put이 실행되어야한다고 생각했는데, 어느부분을 제가 잘못생각하고 있을까요?

답변 1

답변을 작성해보세요.

0

https://github.com/redux-saga/redux-saga/issues/1669

비슷한 질문이 리덕스사가 깃헙에 있네요. put은 dispatch하라고 하는 effect인데 그게 바로 dispatch된다는 보장은 없는 것 같습니다.