fix: request skipErrorHandler 配置问题 (#121)

* fix: request skipErrorHandler 配置问题

* fix: 处理 default 异常问题?
This commit is contained in:
qlin 2022-04-29 15:55:56 +08:00 committed by GitHub
parent 91a5d71654
commit c946536e8e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 30 additions and 113 deletions

View File

@ -142,29 +142,37 @@ function skipErrorHandlerToObj(skipErrorHandler = []) {
}, {});
}
function getErrorKey(error, response) {
const resCode = getResponseCode(response);
if (resCode) return resCode;
if (error.type) return error.type;
return error.response?.status;
}
function isSkipErrorHandler(config, errorKey) {
// 跳过所有错误类型处理
if (config.skipErrorHandler === true) return true;
const skipObj = skipErrorHandlerToObj(config.skipErrorHandler);
return skipObj[errorKey];
}
function handleRequestError({
errorHandler = {},
error,
response,
config
}) {
// 跳过所有错误类型处理
if (config.skipErrorHandler === true) return;
const errorKey = getErrorKey(error, response);
const skipObj = skipErrorHandlerToObj(config.skipErrorHandler);
const resCode = getResponseCode(response);
let errorKey = 'default';
if (resCode && errorHandler[resCode]) {
errorKey = resCode;
} else if (error.type && errorHandler[error.type]) {
errorKey = error.type;
} else if (error.response && errorHandler[error.response.status]) {
errorKey = error.response.status;
}
if (!skipObj[errorKey] && errorHandler[errorKey]) {
return errorHandler[errorKey](error);
if (!isSkipErrorHandler(config, errorKey)) {
if (isFunction(errorHandler[errorKey])) {
errorHandler[errorKey](error, response);
} else if (isFunction(errorHandler.default)) {
errorHandler.default(error, response);
}
}
}

View File

@ -7,7 +7,7 @@ export const request = {
console.log('500 error');
},
default(error) {
console.log(error);
console.log('default error', error);
const msg = error?.data?.msg || error?.msg;
console.log(msg);
}

View File

@ -38,108 +38,17 @@ export default {
console.log('click Icon');
};
console.log(useRoute());
// request('/api', null, {
// }).then((res) => {
// console.log(res);
// });
// request('/api', null, {
// }).then((res) => {
// console.log(res);
// });
// request('/api', null, {
// mergeRequest: true
// }).then((res) => {
// console.log(res);
// });
// request('/api', null, {
// mergeRequest: true
// }).then((res) => {
// console.log(res);
// });
// request('/api', null, {
// throttle: 3000,
// cache: true
// }).then((res) => {
// console.log(res);
// });
const get = (id) => {
request(
'/get/api',
{ id },
{
method: 'get'
}
);
};
const post = (id) => {
request(
'/api',
{ id },
{
responseType: 'blob'
}
).then((data) => {
console.log(data);
const get = () => {
request('/api', null, {
skipErrorHandler: ['500']
}).catch((err) => {
console.log('skip error', err);
});
};
get(1);
// get(2);
// get(3);
// post(1);
// post(2);
post(3);
// setTimeout(() => {
// request('/api', null, {
// throttle: 3000,
// cache: true
// }).then((res) => {
// console.log(res);
// });
// }, 1000);
// setTimeout(() => {
// request('/api', null, {
// throttle: 3000,
// cache: true
// }).then((res) => {
// console.log(res);
// });
// request('/api', null, {
// throttle: 3000,
// cache: true
// }).then((res) => {
// console.log(res);
// });
// }, 3200);
// request('/api', null, {
// cache: true
// }).then((res) => {
// console.log(res);
// });
// request('/api', null, {
// cache: true
// }).then((res) => {
// console.log(res);
// });
// request('/api', null, {
// cache: true
// }).then((res) => {
// console.log(res);
// });
// request('/api', null, {
// // skipErrorHandler: [500]
// }).then((res) => {
// console.log(res);
// }).catch((err) => {
// console.log('inner error', err);
// });
return {
fes,
rotate,