Written on
·
170
0
제가 생각하기로는
takeLatest는 어찌됐 건 클릭을 실수로 2번 하더라도 마지막 요청만 보낸다고 하셨는데 takeEvery와 다름이 없는 것 같아서 조금 헷갈리네요 ㅜㅜ
1. takeLatest가 backend 처리가 없다면, takeEvery와 같다고 볼 수 있을까요 ?
2.takeEvery를 사용하는 경우에는 대표적으로 어떤 경우가 있을까요..?
정보를 조회하는 로그인과 로그아웃 같은 경우
takeEvery로 요청시 여러번 막 눌러도 db에는 "저장"되지 않고 "조회"만 가능하므로 takeEvery를 사용하신걸까요 ?!
3.takeLatest도 어떻게보면 front단에서 요청은 1번으로 보이는 기법?을 활용하지만 그럼에도 불구하고 back단에서 요청이 다 들어간다면,
단순히 front 단에서 요청이 1번으로 보여지는 속임수? 를 위해 사용하시는걸까요 ?
Answer 1
1
둘은 여러개의 액션이 동시에 실행될 때만 차이가 있습니다. 실수로 버튼을 두번 눌러서 결과물이 화면에 두 번 나오는 일을 막으려면 takeLatest 쓰시는 거고 그게 아니라면 takeEvery쓰시면 됩니다.
takeLatest는 이전 작업을 취소하긴 하는데 취소하더라도 이미 보내버린 서버쪽 요청은 다 가긴 하므로 애초에 버튼이 여러번 눌리는 것을 막는게 좋습니다.
takeLatest를 사용하더라도 여려번의 요청으로 중복 저장이 발생되는것을 막는방법이 강의에서처럼 reducer의 state값중 loading값을 가지고 막는 방법 뿐인가요??? 아니면 다른 방법이 또 있을까요?