작성
·
173
1
파일명 : src/util/fetch.js
checkSlowTask = yield fork(makeCheckSlowSaga(actionType, fetchKey));
apiResult = yield value;
이 두 줄에 관해서 질문이 있습니다.
apiResult 값은 value 값이 리턴 될 때까지 기다린 다음 실행이 되는데, checkSlowTask 값은 비동기로 진행되는 이유를 잘 모르겠습니다...
혹시 ...
나머지 부수효과 함수는 비동기 처리를 하고 있지만
call 함수는 인자로 받은 함수를 실행해 주는 역할을 하며, 전달 받은 함수가 프라미스를 반환하는 경우 프라미스가 처리될 때까지 제너레이터를 중지 시키기 때문인가요?
답변 2
1
1
안녕하세요
멈추지(blocking) 않고 (마치 multi threading 처럼) 실행하는 것이 fork의 역할이라서 그렇습니다.
각 부수효과에 대해 어떻게 처리할지는 사가 미들웨어에서 결정하는데요
`yield fork(...` 를 실행하면 사가 미들웨어는 이번에 실행할 것이 fork 부수효과라는 것을 알고 있습니다.
그리고 위에서 말한대로 약속된 방식으로 처리를 합니다.