예를 들어 counterSaga를 다음과 같이 수정하면 increaseSaga는 3초에 단 한 번만 호출됩니다.
import { createAction, handleActions } from 'redux-actions'; import { delay, put, takeEvery, takeLatest, select, throttle } from 'redux-saga/effects'; (...) export function* counterSaga() { // 첫 번째 파라미터: n초 * 1000 yield throttle(3000, INCREASE_ASYNC, increaseSaga); // takeLatest는 기존에 진행 중이던 작업이 있다면 취소 처리하고 // 가장 마지막으로 실행된 작업만 수행합니다. yield takeLatest(DECREASE_ASYNC, decreaseSaga); } (...)
redux-saga는 이 책에서 다룬 기능 외에도 여러 기능을 제공하기 때문에 비동기 작업을 처리하면서 겪을 수 있는 다양한 상황에 맞춰 개발할 수 있습니다. 조금 복잡한 상황을 접했다면 redux-saga의 매뉴얼(https://redux-saga.js.org/)을 참고해 보세요.