自己封装的 axios
import axios from "axios";
const instance = axios.create({
baseURL: "http://xxxxxxx:3000",
timeout: 3000,
})
const reqConfigInter = (config) => {
config.headers.Authorization = localStorage.getItem("token");
return config;
}
const reqErrorInter = (error) => {
console.log("req error");
return Promise.reject(new Error("req error"));
}
const resErrorInter = (error) => {
console.log("res error");
return Promise.reject(new Error("res error"));
}
instance.interceptors.request.use(reqConfigInter, reqErrorInter);
instance.interceptors.response.use(null, resErrorInter);
export default instance;
发起请求
import instance from "./axios.js";
export const getUsers = async () => {
try {
const res = await instance.request({
url: "/api/users",
method: "GET"
});
return res;
} catch (error) {
console.log(error); // 怎样才能让这里的 error 变成上面的 reqErrorInter 产生的 new Error("req error")
}
};
不管是把端口号换成错误端口,还是服务端 setTimeout 故意超时,最后得到的错误都是 resErrorInter 拦截后送出的 ResponseError
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.