import cavar_type from "../cavar_type";
/**
* 功能:axios的interceptors的request&response的二次封装
* @param {axios} instance - axios实例话对象
* @param {object} [task] - 配置对象有四个参数<br/> 1.request_sucss[请求成功回调] 参数类型:[function]<br/> 2.request_error[请求失败回调] 参数类型:[function]<br/> 3.response_sucss[响应成功回调] 参数类型:[function]<br/> 4.response_error[响应失败回调] 参数类型:[function]
* @returns {undefined} - undefined
*/
function axios_interceptors(instance, task = {}) {
if (instance && cavar_type(task) === "object") {
const request_sucss =
task.request_sucss ||
((config) => {
console.log(config);
return config;
});
const request_error =
task.request_error ||
((error) => {
alert("请求失败" + error.message || "未知错误");
return new Promise.reject(new Error("failed:", error)); //中断promise链
});
const response_sucss =
task.response_sucss ||
((response) => {
//3 返回的响应不再需要从data属性当中拿数据,而是响应就是我们要的数据
return response.data;
});
const response_error =
task.response_error ||
((error) => {
alert("响应失败" + error.message || "未知错误");
return new Promise.reject(new Error("failed:", error)); //中断promise链
});
// 请求
instance.interceptors.request.use(request_sucss, request_error);
// 响应
instance.interceptors.response.use(response_sucss, response_error);
} else {
let num;
if (!instance && cavar_type(task) !== "object") {
num = "arguments";
} else if (!instance) {
num = "first";
} else if (cavar_type(task) !== "object") {
num = "second";
}
console.error(
new Error("axios_interceptors: " + num + " is not, you is sb")
);
}
}
export default axios_interceptors;