Я настроил перехватчик axios с целью установки глобальной переменной загрузки в значение true, когда ни один запрос не получил ответа. В моем приложении это предотвратит отправку пользователем формы, которая во многих случаях может привести к ошибкам, поскольку все данные еще не обработаны.
Код:
var numberOfAjaxCAllPending = 0;
// Add a request interceptor
window.axios.interceptors.request.use(function (config) {
numberOfAjaxCAllPending++;
console.log('Request: ---- ' + numberOfAjaxCAllPending);
return config;
}, function (error) {
return Promise.reject(error);
});
// Add a response interceptor
window.axios.interceptors.response.use(function (response) {
numberOfAjaxCAllPending--;
console.log('Pending Response (response): ---- ' + numberOfAjaxCAllPending);
return response;
}, function (error) {
numberOfAjaxCAllPending--;
console.log('Pending Response (error): ---- ' + numberOfAjaxCAllPending);
return Promise.reject(error);
});
global.loading = numberOfAjaxCAllPending > 0;
Когда запрос сделан, счетчик ожидания увеличивается, а ответ возвращается в уменьшенном виде. Значение больше 0 означает, что запросы все еще находятся на рассмотрении.
Я немного озадачен ошибочной частью обещания по каждому из них. Я должен добавить уменьшение в ожидании ошибки ответа, чтобы он мог перехватывать не 200 ответов.
С запросом, я предполагаю, что в случае ошибки запрос не будет отправлен, и я не буду ожидать ответа. Это правильно?