一定要注意:Promise如果你要处理异常【等价于catch】就使用reject方法,而如果仅是返回数据,必须使用resole方法
const axios = require("axios");
const GlobalError = require("../global/GlobalError.js");
module.exports = class OwnAxios {
static async axiosRequest (url, formData = null, method = "POST", successFunc = null, failFunc = null) {
console.log("formdata", formData);
let [error, res] = await new Promise((resolve, reject) => {
axios({
url: url,
method: method,
data: formData,
}).then((res) => {
resolve([null, res]);
}).catch((error) => {
封装Promise这里不能使用reject(error)【等价于catch】,要返回error结果必须resolve才可以
【非常重要】axios这个库的的错误有两种情况【1、请求成功,但是状态码不是200; 2、是请求失败】
if (error.response) {
请求已发出,返回状态码不是200的情况【这种情况依然需要判断状态码,把结果赋值返回给res】
resolve([null, error.response]);
} else {
这种情况就是数据库连接失败,请求异常了【结果返回给error】
resolve([error, null]);
}
});
});
console.log([error, res]);
return GlobalError.requestErrorOrSuccessHandle(res, error, successFunc, failFunc);
}
};