События, обработанные другой сагой (Redux-Сага)

#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. ну, просто попробуйте приведенный выше фрагмент, это должно сделать работу за вас