65 行
1.6 KiB
JavaScript
65 行
1.6 KiB
JavaScript
import axios from 'axios';
|
|
import { failed } from './alert';
|
|
import qs from 'qs';
|
|
import History from './history';
|
|
|
|
export function get(url) {
|
|
return send(
|
|
axios.get(url, {
|
|
headers: {
|
|
Authorization: localStorage.getItem('jwt'),
|
|
"Allow-Control-Allow-Origin": "*"
|
|
}
|
|
}),
|
|
() => get(url)
|
|
);
|
|
}
|
|
export function post(url, data) {
|
|
return send(
|
|
axios.post(url, qs.stringify(data), {
|
|
headers: {
|
|
Authorization: localStorage.getItem('jwt'),
|
|
"Allow-Control-Allow-Origin": "*"
|
|
}
|
|
}),
|
|
() => post(url, data)
|
|
);
|
|
}
|
|
|
|
const waitToSend = [];
|
|
|
|
async function send(xhr, retryFunc) {
|
|
if (waitToSend.length) {
|
|
waitToSend.push(retryFunc);
|
|
return;
|
|
}
|
|
try {
|
|
const { data } = await xhr;
|
|
console.log("recv: ", data);
|
|
return {
|
|
...data,
|
|
networkStatus: 200
|
|
};
|
|
}
|
|
catch (err) {
|
|
const failData = {
|
|
networkStatus: err?.response?.status ?? -1,
|
|
status: false
|
|
};
|
|
if (err?.response?.status === 401) {
|
|
History.force('/login');
|
|
return failData;
|
|
}
|
|
waitToSend.push(retryFunc);
|
|
if (err.message === 'Network Error')
|
|
return await failed('您的设备似乎断网了,请检查网络后重试或刷新', flushWaitList) || failData;
|
|
if (err?.response?.status === 504)
|
|
return await failed('请求超时,请耐心等待几秒后重试或刷新', flushWaitList) || failData;
|
|
return await failed('服务器出现问题,请稍后重试或刷新', flushWaitList) || failData;
|
|
}
|
|
}
|
|
|
|
function flushWaitList() {
|
|
waitToSend.forEach(retryFunc => retryFunc());
|
|
waitToSend.splice(0, waitToSend.length);
|
|
} |