강의

멘토링

커뮤니티

인프런 커뮤니티 질문&답변

NOAH님의 프로필 이미지
NOAH

작성한 질문수

[리뉴얼] React로 NodeBird SNS 만들기

take, take 시리즈, throttle 알아보기

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는 함수가 새로 호출이 되었으니 한 번씩 다시 실행되는 것이고요.

NOAH님의 프로필 이미지
NOAH

작성한 질문수

질문하기