제너레이터 함수 안 yield 구문 실행에대해 질문드립니다..
243
작성한 질문수 2
function* test() {
yield 1;
yield 2;
}
===============
const gen = test()
===============
gen.next()
{
"value": 1,
"done": false
}
보통 제너레이터 함수를 설명할때, 개발자 도구에서 이런식으로 설명을 많이 하는것같은데...
설명만 보면 yield 구문실행을 위해선, next() 라는 함수를 사용해야된다는건 알겠습니다..
근데 실제코드에서는 next() 함수를 실행하지않는데, 어떻게 yield 구문들이 실행되는지 이해가 안됩니다..
답변 1
0
next는 리덕스 사가에서 호출해줍니다.
0
답변 감사합니다. 그럼 리덕스 사가에서 어떤 이펙트로 호출해주는지 알수있을까요? 사가에서 호출한다면 take관련 명령어 인거같긴한데..yield 구문을 만날때마다 호출을 해주는건지..어떤식으로 호출하는지 알수 있을까요?
0
어떤 이펙트로 호출하냐는 건 무슨 말씀이신지 잘 모르겠습니다.
이펙트가 종료되어서 다음 줄로 넘어가야 할 때 saga가 알아서 next를 호출해줍니다. 모든 이펙트에서 다 next를 호출합니다.
0
아 이펙트라고 적은것은 saga/effects 입니다. 말씀하신대로라면
saga에서 take로 action이 발생되는것을 기다리고있다가, action이 발생이되면 연결시켜놨던 함수를 실행시키는거고, 그안의 yield들은 자동으로 사가가 next를 호출한다는 말씀이실까요?
모든 이펙트라고 하면 put , call , fork , take등등 모든걸 말씀하시는걸까요?
말씀대로라면 어차피 동기식(fork제외)으로 다 실행될꺼 굳이 제너레이터 함수를 쓰는이유는 무엇인지 알수있을까요...?ㅠ 너무 무지해서 꼬치꼬치 묻는게 너무 죄송하네요.
0
네 맞습니다.
네 맞습니다. yield가 붙는 모든 것들에 해당합니다.
fork 제외가 동기라고 생각하시면 안 됩니다. call도 비동기입니다. 다만 yield가 비동기 call이 끝나고 next를 해주는 것이죠. fork는 비동기함수가 끝나기 전에 next를 해주는 것이고요. 대부분의 이펙트가 비동기라서 제너레이터로 컨트롤하는 겁니다. 제너레이터는 또한 중간에 취소할 수 있어서 좋거든요.
넥스트 버젼 질문
0
78
2
로그인시 401 Unauthorized 오류가 뜹니다
0
89
1
무한 스크롤 중 스크롤 튐 현상
0
175
1
특정 페이지 접근을 막고 싶을 때
0
103
2
createGlobalStyle의 위치와 영향범위
0
96
2
인라인 스타일 리렌더링 관련
0
91
2
vsc 에서 npm init 설치시 오류
0
146
2
nextjs 15버전 사용 가능할까요?
0
158
1
화면 새로고침 문의
0
121
1
RTK에서 draft, state 차이가 있나요?
0
153
2
Next 14 사용해도 될까요?
0
452
1
next, node 버전 / 폴더 구조 질문 드립니다.
0
349
1
url 오류 질문있습니다
0
211
1
ssh xxxxx로 우분투에 들어가려니까 port 22: Connection timed out
0
373
1
sudo certbot --nginx 에러
0
1275
2
Minified React error 콘솔에러 (hydrate)
0
470
1
카카오 공유했을 때 이전에 작성했던 글이 나오는 버그
0
247
1
프론트서버 배포 후 EADDRINUSE에러 발생
0
327
1
npm run build 에러
0
518
1
front 서버 npm run build 중에 발생한 에러들
0
382
1
서버 실행하고 브라우저로 들어갔을때 404에러
0
338
2
css 서버사이드 랜더링이 적용되지 않아서 문의 드립니다.
0
288
1
팔로워 3명씩 불러오고 데이터 합쳐주는걸로 바꾸고 서버요청을 무한으로하고있습니다.
0
239
2
해시태그 검색에서 throttle에 관해 질문있습니다.
0
201
1





