[英]When does an Axios interceptor's error handler get called?
我已經設置了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個響應。
對於該請求,我假設如果有錯誤,則該請求將不會發送,並且不會收到響應。 這個對嗎?
在請求攔截器上,如果您不想等待響應,則還需要減小該值。
請求攔截器中的函數將在請求之前被調用。
收到響應后,將調用響應攔截器中的函數。
也就是說,如果在調用請求攔截器后發生錯誤,則需要減少該值。 如果在請求攔截器之前發生錯誤,則無需減少它。
它僅取決於錯誤發生的時間。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.