Как добиться обратного вызова в Redux-Saga?

Сценарий заключается в том, что я хочу перенаправить пользователя или показать предупреждение на основе успешных сообщений об ошибках после отправки действия.

Ниже приведен код с использованиемперевождь-преобразователь для задачи

this.props.actions.login(credentials)
.then((success)=>redirectToHomePage)
.catch((error)=>alertError);

так как диспетчерское действие в redux-thunk возвращает Promise, с ответом легко действовать.

Но теперь я запачкаю руки на redux-saga и пытаюсь понять, как мне достичь того же результата, что и в предыдущем коде. Так как Saga работает в другом потоке, я не могу получить обратный вызов из запроса выше. так что я просто хотел узнать, как вы, ребята, делаете это. или каков наилучший способ справиться с обратными вызовами при использовании redux-саги? действие отправки выглядит так:

this.props.actions.login (полномочия);

и сага

function* login(action) {
  try {
    const state = yield select();
    const token = state.authReducer.token;
    const response = yield call(API.login,action.params,token);
    yield put({type: ACTION_TYPES.LOGIN_SUCCESS, payload:response.data});
    yield call(setItem,AUTH_STORAGE_KEY,response.data.api_token);
  } catch (error) {
    yield put({type: ACTION_TYPES.LOGIN_FAILURE, error})
  }
}

сага монитор

export function* loginMonitor() {
  yield takeLatest(ACTION_TYPES.LOGIN_REQUEST,login);
}

создатель действия

function login(params) {
  return {
    type: ACTION_TYPES.LOGIN_REQUEST,
    params
  }
}

Ответы на вопрос(2)

Ваш ответ на вопрос