Blog>
Snippets

Canceling a Throttled Saga

Provide a code snippet on how to cancel a throttled saga using the cancel effect, catering to dynamic application needs.
import { throttle, take, cancel, fork } from 'redux-saga/effects';
Import necessary effects from redux-saga.
import { fetchSaga } from './sagas';
Import the saga you intend to throttle and potentially cancel.
function* watchFetchSaga() {
Define a watcher saga that will throttle the execution of fetchSaga.
  const task = yield throttle(500, 'FETCH_REQUESTED', fetchSaga);
Use the throttle effect to run fetchSaga at most once every 500ms upon a 'FETCH_REQUESTED' action.
  yield take('FETCH_CANCELLED');
Wait for a 'FETCH_CANCELLED' action before proceeding to cancel the task.
  yield cancel(task);
Cancel the throttled task when 'FETCH_CANCELLED' is dispatched.
}
Close the watcher saga block.