더북(TheBook)

예를 들어 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/)을 참고해 보세요.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.