inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

React로 NodeBird SNS 만들기

4-6. takeEvery, takeLatest

put 앞에 yield 쓰는것 질문

해결된 질문

187

stefan CHO

작성한 질문수 37

0

좀 바보같은 질문일수도 있는데..

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 앞에도 써주는 이유가 뭔지 궁금합니다.

javascript react

답변 3

1

제로초(조현영)

네네 원래 generator에서는 중단점/대기점에서 yield하는 게 맞습니다. 그런데 사가의 yield에는 두 가지 이득이 더 있습니다.

일단 call같이 비동기 요청 후 값을 받아오는 것에서 비동기 요청이 완료된 후에 yield 값이 나옵니다.(await 문법과 비슷합니다)

put과 같이 비동기일 필요가 없는 함수도 앞에 yield를 붙이면 함수를 테스트할 때 편리합니다. generator에서 각 단계별로 잘 실행되는지 테스트할 때 next를 호출할때마다 한 단계씩 실행되기 때문에 테스트하기 용이합니다.

0

제로초(조현영)

네네 put 앞에 yield같은 건 테스트 용도가 더 큽니다.

0

stefan CHO

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