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




