Estoy intentando crear un interceptor de errores para todas mis sagas, después de analizar el eventChannel de redux-saga intenté crear una saga como esta:
export function interceptor() { return eventChannel(() => { api.interceptors.response.use( (response) => response, (error) => { const { response } = error; if ([401, 403].includes(response.status)) { emit(AuthCreators.logoutRequest()); } return Promise.reject(error); } ); return () => null; }); }En rootSaga se llama de esta manera:
export default function* rootSaga() { return yield all([fork(interceptor), anotherSaga, anotherSaga2]); }De esta manera, cada vez que una de mis otras sagas tiene una captura, el interceptor se activa, sin embargo, mi emisión que debería activar la solicitud de cierre de sesión que está en otra saga no se activa.
Ya agradecido
Tal vez no entiendo tu pregunta exactamente, pero esto podría ayudarte.
const saga = [ anotherSaga, anotherSaga2 ] yield all(sagas.map((saga) => spawn(function* () { try { yield call(saga); } catch (e) { // console.log(e); // here we should store all errors in some service... } })));