河北省住房和城市建设厅网站,怎么做cpa网站,自行建网站 所需费用,福永网站优化背景#xff1a;因表单提交后台逻辑较多#xff0c;执行速度超过3秒所以提交时添加了遮罩加载层#xff0c;当后台返回非200状态码时request.js会抛出控制台异常导致后续逻辑不执行了#xff0c;使用try-cat.catch捕获异常也无效#xff0c;因为request.js会优先拦截处理 …背景因表单提交后台逻辑较多执行速度超过3秒所以提交时添加了遮罩加载层当后台返回非200状态码时request.js会抛出控制台异常导致后续逻辑不执行了使用try-cat.catch捕获异常也无效因为request.js会优先拦截处理
解决办法 修改request.js中的拦截器方法
// 响应拦截器
service.interceptors.response.use(res {// 未设置状态码则默认成功状态const code res.data.code || 200;// 获取错误信息const msg errorCode[code] || res.data.msg || errorCode[default]// 二进制数据则直接返回if (res.request.responseType blob || res.request.responseType arraybuffer) {return res.data}if (code 401) {if (!isRelogin.show) {isRelogin.show true;MessageBox.confirm(登录状态已过期您可以继续留在该页面或者重新登录, 系统提示, { confirmButtonText: 重新登录, cancelButtonText: 取消, type: warning }).then(() {isRelogin.show false;store.dispatch(LogOut).then(() {location.href /index;})}).catch(() {isRelogin.show false;});}return Promise.reject(无效的会话或者会话已过期请重新登录。)} else if (code 500) {Message({ message: msg, type: error })//return Promise.reject(new Error(msg)) //当状态码是500时提醒即可不允许抛异常到控制台否则后面的逻辑就不被执行例如加载层需要关闭就会无法关闭了return res.data;} else if (code 601) {Message({ message: msg, type: warning })return Promise.reject(error)} else if (code ! 200) {Notification.error({ title: msg })return Promise.reject(error)} else {return res.data}},error {console.log(err error)let { message } error;if (message Network Error) {message 后端接口连接异常;} else if (message.includes(timeout)) {message 系统接口请求超时;} else if (message.includes(Request failed with status code)) {message 系统接口 message.substr(message.length - 3) 异常;}Message({ message: message, type: error, duration: 5 * 1000 })return Promise.reject(error)}
)
重点看自己后台返回的状态码是多少例如我使用默认的500那么在上面js中就注释掉判断状态码500里面的 //return Promise.reject(new Error(msg))也就是不抛异常只是正常的弹窗提示即可自己的处理逻辑中也就不需要弹出提示了在这统一提示了