|
@@ -38,13 +38,14 @@ axios.interceptors.request.use(config => {
|
|
|
if (config.method === 'post' && meta['isSerialize'] === true) {
|
|
|
config.data = toSerialize(config.data);
|
|
|
}
|
|
|
+ config.metadata = {startTime: new Date()}
|
|
|
return config
|
|
|
}, error => {
|
|
|
return Promise.reject(error)
|
|
|
});
|
|
|
|
|
|
//http response 拦截
|
|
|
-axios.interceptors.response.use(res => {
|
|
|
+axios.interceptors.response.use(async (res) => {
|
|
|
//获取状态码
|
|
|
const status = res.data?.code || res.status;
|
|
|
const message = res.data?.msg || res.data['error_description'] || '未知错误';
|
|
@@ -57,10 +58,29 @@ axios.interceptors.response.use(res => {
|
|
|
if (status !== 200) {
|
|
|
return Promise.reject(res);
|
|
|
}
|
|
|
- return res;
|
|
|
+ //判断响应时间
|
|
|
+ res.config.metadata.endTime = new Date()
|
|
|
+ if (res.config.isDelay) {
|
|
|
+ const {startTime, endTime} = res.config.metadata
|
|
|
+ const duration = endTime - startTime
|
|
|
+ if (duration > 200) {
|
|
|
+ return res;
|
|
|
+ } else {
|
|
|
+ await setDurationTimeout(duration)
|
|
|
+ return res;
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ return res;
|
|
|
+ }
|
|
|
}, error => {
|
|
|
window.$message?.error('请求异常!');
|
|
|
return Promise.reject(new Error(error));
|
|
|
});
|
|
|
|
|
|
+const setDurationTimeout = (duration) => {
|
|
|
+ setTimeout(() => {
|
|
|
+ return Promise.resolve(true)
|
|
|
+ }, 1000 - duration)
|
|
|
+}
|
|
|
+
|
|
|
export default axios;
|