Всем доброго дня! Есть следующая ситуация - при открытии определенной страницы выполняется несколько запросов через useEffect. Эти запросы идут параллельно друг другу и используется interceptor. В случае возникновения ошибки по запросу мы её визуализируем всплывающим окном посредством react-toastify. Все хорошо до того момента пока не приходит определенная ошибка доступа. В этом случае визуализируется 3 окна с одной и той-же ошибкой так как запросы отправлялись одновременно. Задача стоит в том чтобы визуализировать данную ошибку только один раз, вместо 3. При этом необходимо сохранить асинхронность запросов и постараться избежать костылей. Как подобное можно было бы реализовать? Или может не нужно трогать сами запросы, а нужно продумать архитектуру показа ошибок? Буду рад любым советам!
Ниже привожу пример кода.
const instance = axios.create({
baseURL: BASE_URL,
headers: {
"Content-Type": "application/json",
"Access-Control-Expose-Headers": "Content-Disposition",
},
timeout: 3600000,
});
instance.interceptors.request.use(
(config) => {
const configDes = { ...config };
const token = 12345678;
if (token) {
configDes.headers.Authorization = `Bearer ${token}`;
}
return configDes;
},
(error) => Promise.reject(error)
);
instance.interceptors.response.use(
(response) => response,
(error) => Promise.reject(error)
);
const api1 = () => instance.get("api/api1");
const api2 = () => instance.get("api/api2");
const api3 = () => instance.get("api/api2");
const api1Action = () =>
api1()
.then((res) => console.log(res))
.catch((err) => console.log(err));
const api2Action = () =>
api2()
.then((res) => console.log(res))
.catch((err) => console.log(err));
const api3Action = () =>
api3()
.then((res) => console.log(res))
.catch((err) => console.log(err));
useEffect(() => {
dispatch(api1Action());
dispatch(api2Action());
dispatch(api3Action());
}, []);