-
카테고리
-
세부 분야
풀스택
-
해결 여부
미해결
제너레이터의 task에 대해 질문있습니다.
21.05.03 22:16 작성 조회수 150
0
강의를 들으면서
take 는 단 한번 next()를 할 수 있는 함수로 이해했는데,
yield take(action, generator func)의 구문을 사용하면
지정한 action이 발생했을 때
한번은 사용되어야하는 것 아닌가요?..
take(addcomment_request, addcomment)의 경우
addcomment_request 액션이 발생한 콘솔은 찍히는데,
addcomment 제너레이터함수가 실행되지 않아서 이해가 잘 안됩니다! ㅠㅠ
takeLatest 로 변경해서 사용하니 문제가 해결되긴했는데
궁금해서 질문드렸습니다.
답변을 작성해보세요.
0
김준호
질문자2021.05.04
post / comment 부분입니다!
ADD_COMMENT_REQUEST 액션에 맞게 dispatch 되는 것은 확인하였는데,
addComment 제너레이터함수가 실행이 되지 않습니다.
takeLatest를 사용하면 문제없이 잘되요!!
function* addComment(action){
try{
// const result = yield call(addCommentAPI, action.data);
yield delay(1000);
yield put({
type:ADD_COMMENT_SUCCESS,
data:action.data,
})
}
catch(err){
yield put({
type:ADD_COMMENT_FAILURE,
data:err.response.data,
})
}
}
function* watchAddComment(){
yield take(ADD_COMMENT_REQUEST, addComment);
}
export default function* post(){
yield all([
fork(watchAddComment),
fork(watchAddPost),
])
}
0
답변 2