인프런 커뮤니티 질문&답변
take 관련
작성
·
214
0
2. 사라집니다. 질문의 의도를 추측해보자면 take은 한 번 실행하고 더이상 실행이 안되는데 delay랑 Put은 왜 다음번에 되는지를 물어보시는 것 같은데요. watch 함수는 한 번만 실행되고 login* 함수같은 것은 매번 실행돼서 그렇습니다. 하나의 함수 안에서 더이상 호출이 안 되는거지 새로운 함수가 또 실행되면 새 함수 안에서는 실행됩니다.
=============================================
밑에 다른 분께서 올리신 질문중에 take와 다른 이펙트들에 대해서 질문한 글을 봤습니다. 저도 궁금한 점이 있어서요.
watch 함수는 한 번만 실행하고 login* 함수는 매번 실행한다는 게 어떤 의미 일까요?
만약 로그인을 한다고 하였을때
watchLogin() --> Login() --> loginAPI() ..
1) 이런식으로 불리는데 어차피 take든 delay든 put이든 다 한 번만 불려서 한 번만 쓰고 버려지는 그런게 아닐까요?
2) 사실 한 번만 실행이 가능하다는건 이해를 했는데 그 의도가 이해가 안가네요. 그냥 take라는 이펙트 자체의 의도가 한 번만 실행하도록 한거고 여러번 눌릴것을 대비하여 takeLatest를 쓰면된다라고만 이해하면 될까요?
3) 그리고 take가 단 한번만 실행이 가능하다는 의미가 한 번 실행후에는 함수를 불러도 더 이상 실행이 안된다. 그러나 delay나 put같은경우에는 같은 함수를 실행하면 다시 실행된다. 이렇게 이해를 해야할까요.
감사합니다.
퀴즈
Redux Thunk의 주된 역할은 무엇일까요?
상태 변화 로깅하기
비동기 액션 처리 돕기
액션 타입 상수화 강제하기
리듀서 불변성 자동으로 관리하기
답변 1
1
모든 effect들은 한 번만 호출되는 게 맞습니다. watch나 take, takeLatest, put, delay 등 모두요.
login*처럼 제가 직접 만든 함수는 상황에 따라 여러 번 호출됩니다. watch에 넣은 것이나 takeLatest에 넣은 것들이요. 그 안에 든 effect는 함수가 새로 호출이 되었으니 한 번씩 다시 실행되는 것이고요.




