axios配置請求失敗時的攔截器,用於當請求失敗時重新發送請求,或者提示

import Axios from "axios";

import {

API_ROOT,

CONTENT_TYPE,

COMPANY_KEY,

API_USR,

API_VSS

} from "./config";

// 創建axios實例對象

const REQUEST = Axios.create();

// 配置axios實例對象初始路徑

REQUEST.defaults.baseURL = API_ROOT;

 

REQUEST.defaults.headers.post["Content-Type"] = CONTENT_TYPE;

 

// 請求失敗重試次數

REQUEST.defaults.retry = 4;

// 請求重試延遲

REQUEST.defaults.retryDelay = 1000;

 

// 超時請求機制(未使用)

REQUEST.interceptors.response.use(undefined, function axiosRetryInterceptor(err) {

var config = err.config;

console.log("超時請求-----------------------")

console.log(err)

console.log(config)

// 如果配置不存在或未設置重試選項,則拒絕

if (!config || !config.retry) return Promise.reject(err);

 

//設置變量以跟蹤重試次數

config.__retryCount = config.__retryCount || 0;

 

// 檢查我們是否已經註銷了總重試次數

if (config.__retryCount >= config.retry) {

// 剔除錯誤

return Promise.reject(err);

}

 

// 增加重試次數

config.__retryCount += 1;

 

// 創建新的異步對象來處理重試請求

var backoff = new Promise(function(resolve) {

setTimeout(function() {

resolve();

}, config.retryDelay || 1);

});

 

/**

*

Return the promise in which recalls axios to retry the request

返回調用AXIOS來重試請求

*

* */

 

return backoff.then(function() {

return axios(config);

});

});

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章