put 앞에 yield 쓰는것 질문
좀 바보같은 질문일수도 있는데..
loop안에 take, delay , put앞에 모두 yield를 써야하는 이유가 뭘까요
예를 들면
function* generator(){
yield console.log(1);
yield console.log(2);
yield console.log(3);
yield console.log(4);
}
여기서 제가 1~4까지 출력을 하고 싶다면 next를 네번해야하는건데
function* generator(){
yield console.log(1); // take처럼 대기하는 시점이 여기라치면
console.log(2);
console.log(3);
yield console.log(4);
}
이렇게 하면 next 두번에 1~4까지 다 출력되는 거 잖아요.
만약 take, put 과 같은게 루프 한번에 들어가있으면, 루프 한바퀴의 첫부분과 마지막 부분인 take와 put에만 yield를 써주면 문제되는 상황이 있나요? delay 앞에도 써주는 이유가 뭔지 궁금합니다.
답변 3
1
네네 원래 generator에서는 중단점/대기점에서 yield하는 게 맞습니다. 그런데 사가의 yield에는 두 가지 이득이 더 있습니다.
일단 call같이 비동기 요청 후 값을 받아오는 것에서 비동기 요청이 완료된 후에 yield 값이 나옵니다.(await 문법과 비슷합니다)
put과 같이 비동기일 필요가 없는 함수도 앞에 yield를 붙이면 함수를 테스트할 때 편리합니다. generator에서 각 단계별로 잘 실행되는지 테스트할 때 next를 호출할때마다 한 단계씩 실행되기 때문에 테스트하기 용이합니다.
0
function* authorize(user, password) {
try {
const token = yield call(Api.authorize, user, password)
yield put({type: 'LOGIN_SUCCESS', token})
return token
} catch(error) {
yield put({type: 'LOGIN_ERROR', error})
}
}
redux saga 공식 문서 예제 인데
call 으로 데이터 갖고 온다음에 다음put이 실행되게 yield넣는다는게 이 코드를 말씀하시는게 맞죠?
빠른 답변감사해요
next 10 이상에서는 redux dev tool 구동이 안되나요?
0
272
1
세션 갱신 문의 건
0
482
7
배포 진행 후 Highlight updates components render 표시
0
445
1
똑같은 기능을 하는 테이블
0
447
4
관계형
0
312
2
프론트 서버를 이용하지 않는경우
1
299
3
인피니트 스크롤링 사용시 오류
0
278
0
계속 이런에러가 떠서 해결하기는 했는데 어떤 의미인지 모르겠습니다.
0
433
2
req.user가 언제 생성되나요??
0
330
2
Cannot read property 'id' of null 에러
0
333
1
리트윗한 게시글 불러오는 sequelize
0
252
1
result.data에서 images인 이유
0
281
2
takeLatest에 대한 질문입니다.
1
342
2
프론트에서 express를 사용하지 않을때 동적라우팅
0
501
6
getInitialProps가 클라이언트에서 수행되는 이유?
0
258
1
리로드하면 팔로우 언팔로우 값이 초기화 되는 문제입니다.
0
445
2
스타일드 컴포넌트와 className을 통한 스타일 적용의 차이에 대해 궁금합니다
0
585
2
할인 쿠폰 사용이 안되는되요 (848-f9af83f183e3)
0
365
1
nodejs mvc 패턴
0
975
4
사용하고 보니, 람다 구성이 궁금합니다!
0
266
1
제로초님
0
445
1
새로고침 로그인 풀림 문제.
0
247
1
안녕하세요. 강의 너무 감사합니다
0
157
1
제로초님
0
170
1





