一. 碰到这样的业务场景:
多次触发查询按钮时,取消其他查询请求,只保留最后一个。如果涉及到图表展示的,逻辑会稍需要一些处理,比如点击查询,显示loading,请求回来后,有数据则展示数据,无数据或者返回错误信息则显示未查到相关数据。
二、vue项目的实现方式
- 取消请求:
if (this.cancelRequest){
this.cancelRequest()
}
let CancelToken = axios.CancelToken
this.$axios({
method: 'post',
url: '/login/login',
params: obj,
cancelToken: new CancelToken((c)=>{
this.cancelRequest = c
})
}).then((res)=>{
if(!res)return;
}).catch((res)=>{
this.loading = false
})
- 区分请求返回的错误信息.
如果是取消请求导致的,则一直处于loading状态,如果返回错误信息,则关闭loading,显示未查到相关数据。 怎么区分错误信息呢,axios有一个方法isCalcel可以判断是不是由取消请求导致的错误信息。 代码如下:
axios.interceptors.reaponse.use((res)=>{
},(err)=>{
if(!axios.isCancel(err) {
return err
})
})
|