【发布时间】:2019-04-06 16:50:06
【问题描述】:
我设置了一个 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 响应。
对于请求,我假设如果有错误,那么请求将不会发送,我不会期待响应。这是正确的吗?
【问题讨论】:
标签: javascript promise axios es6-promise