#javascript #reactjs #react-redux #redux-saga
Вопрос:
Я пытаюсь создать перехватчик ошибок для всех моих саг, проанализировав канал событий redux-saga, я попытался создать подобную сагу:
export function interceptor() { return eventChannel(() =gt; { api.interceptors.response.use( (response) =gt; response, (error) =gt; { const { response } = error; if ([401, 403].includes(response.status)) { emit(AuthCreators.logoutRequest()); } return Promise.reject(error); } ); return () =gt; null; }); }
В корнях это называется так:
export default function* rootSaga() { return yield all([fork(interceptor), anotherSaga, anotherSaga2]); }
Таким образом, каждый раз, когда в одной из моих других саг есть перехват, запускается перехватчик, однако мой выброс, который должен вызвать запрос на вход, который находится в другой саге, не запускается.
- Как эмиссия может вызывать другие саги?
- Это лучший способ создать перехватчик ошибок?
Уже благодарен
Ответ №1:
Может быть, я не совсем понимаю ваш вопрос, но это может вам помочь
const saga = [ anotherSaga, anotherSaga2 ] yield all(sagas.map((saga) =gt; spawn(function* () { try { yield call(saga); } catch (e) { // console.log(e); // here we should store all errors in some service... } })));
Комментарии:
1. Я хотел бы создать функцию, которая запускала бы любую ошибку, возникающую в любой саге, таким образом, я мог бы обрабатывать некоторые стандартные ошибки без необходимости повторять их при каждой ПОПЫТКЕ/УЛОВЕ
2. ну, просто попробуйте приведенный выше фрагмент, это должно сделать работу за вас