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

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