• 카테고리

    질문 & 답변
  • 세부 분야

    프론트엔드

  • 해결 여부

    미해결

질문있습니다

20.10.13 18:38 작성 조회수 131

1

파일명 : src/util/fetch.js

checkSlowTask = yield fork(makeCheckSlowSaga(actionType, fetchKey));
apiResult = yield value;

이 두 줄에 관해서 질문이 있습니다. 
apiResult 값은 value 값이 리턴 될 때까지 기다린 다음 실행이 되는데, checkSlowTask 값은 비동기로 진행되는 이유를 잘 모르겠습니다...

혹시 ...

나머지 부수효과 함수는 비동기 처리를 하고 있지만

call 함수는 인자로 받은 함수를 실행해 주는 역할을 하며, 전달 받은 함수가 프라미스를 반환하는 경우 프라미스가 처리될 때까지 제너레이터를 중지 시키기 때문인가요?

답변 2

·

답변을 작성해보세요.

1

call 함수와 fork 함수는 blocking / non-blocking 실행의 차이가 있었군요 ㅠㅠ 강의 너무좋습니다 진짜로 ...
답변 감사합니다!

1

안녕하세요
멈추지(blocking) 않고 (마치 multi threading 처럼) 실행하는 것이 fork의 역할이라서 그렇습니다.
각 부수효과에 대해 어떻게 처리할지는 사가 미들웨어에서 결정하는데요
`yield fork(...` 를 실행하면 사가 미들웨어는 이번에 실행할 것이 fork 부수효과라는 것을 알고 있습니다.
그리고 위에서 말한대로 약속된 방식으로 처리를 합니다.