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);
});
});