修复了几个网络请求管理器的重大bug
This commit is contained in:
父節點
c80ce3d31b
當前提交
9b3c1a7b55
@ -89,24 +89,33 @@ async function send(xhr, retryConf) {
|
||||
console.log(err);
|
||||
// 等待列表不为空时弹框要么出现了要么就是在消失的路上,没有办法给予用户点击重试的机会,所以交由外部逻辑处理
|
||||
|
||||
const failPostProceess = () => {
|
||||
waitToSend.splice(waitToSend.indexOf(retryConf), 1);
|
||||
return failData;
|
||||
}
|
||||
|
||||
// 注意,理论上带有时间戳的请求是不可以重试的,但是这里不做那方面考虑,如果未来有需要,可以自己实现一个刷新时间戳重试的逻辑
|
||||
if (err.message === 'Network Error')
|
||||
return (await failed('您的设备似乎断网了,或者服务器发生了问题,请检查网络后重试或刷新', flushWaitList)) || failData;
|
||||
return (await failed('您的设备似乎断网了,或者服务器发生了问题,请检查网络后重试或刷新', flushWaitList(retryConf))) || failPostProceess();
|
||||
if (!err?.response?.status)
|
||||
return (await failed('请求发生问题:' + err.message, flushWaitList)) || failData;
|
||||
return (await failed('请求发生问题:' + err.message, flushWaitList(retryConf))) || failPostProceess();
|
||||
if (err.response.status === 504)
|
||||
return (await failed('请求超时,请耐心等待几秒后重试或刷新', flushWaitList)) || failData;
|
||||
return (await failed('服务器出现问题,请稍后重试或刷新,错误代码' + err.response.status, flushWaitList)) || failData;
|
||||
return (await failed('请求超时,请耐心等待几秒后重试或刷新', flushWaitList(retryConf))) || failPostProceess();
|
||||
return (await failed('服务器出现问题,请稍后重试或刷新,错误代码' + err.response.status, flushWaitList(retryConf))) || failPostProceess();
|
||||
}
|
||||
}
|
||||
|
||||
function flushWaitList() {
|
||||
let fns = waitToSend.map(
|
||||
conf =>
|
||||
async () => conf.resolver(await conf.fetcher())
|
||||
);
|
||||
waitToSend.splice(0, waitToSend.length);
|
||||
fns.forEach(fn => fn());
|
||||
function flushWaitList(confToRun) {
|
||||
return async () => {
|
||||
waitToSend.splice(waitToSend.indexOf(confToRun), 1);
|
||||
let fns = waitToSend.map(
|
||||
conf =>
|
||||
async () => conf.resolver ? conf.resolver(await conf.fetcher()) : await conf.fetcher()
|
||||
);
|
||||
waitToSend.splice(0, waitToSend.length);
|
||||
fns.forEach(fn => fn());
|
||||
return confToRun.resolver ? confToRun.resolver(await confToRun.fetcher()) : await confToRun.fetcher()
|
||||
};
|
||||
}
|
||||
|
||||
function feedWaitList(data) {
|
||||
|
載入中…
x
新增問題並參考
Block a user