18.3.2 redux-saga
이번에는 redux-saga를 통해 비동기 작업을 관리하는 방법을 알아보겠습니다. 이 미들웨어는redux-thunk 다음으로 많이 사용하는 비동기 작업 관련 미들웨어입니다.
redux-thunk는 함수 형태의 액션을 디스패치하여 미들웨어에서 해당 함수에 스토어의 dispatch와 getState를 파라미터로 넣어서 사용하는 원리입니다. 그래서 구현한 thunk 함수 내부에서 원하는 API 요청도 하고, 다른 액션을 디스패치하거나 현재 상태를 조회하기도 했습니다. 대부분의 경우에는 이전 절에서 배운 redux-thunk로도 충분히 기능을 구현할 수 있습니다.
이번에 배울 redux-saga는 좀 더 까다로운 상황에서 유용합니다. 예를 들어 다음과 같은 상황에서는 redux-saga를 사용하는 것이 유리합니다.
• 기존 요청을 취소 처리해야 할 때(불필요한 중복 요청 방지)
• 특정 액션이 발생했을 때 다른 액션을 발생시키거나, API 요청 등 리덕스와 관계없는 코드를 실행할 때
• 웹소켓을 사용할 때
• API 요청 실패 시 재요청해야 할 때