Vue使用axios,终止多次请求方式,防抖
三种防抖策略:
- 定时器;
- abort();
- axios自带撤销请求
这里只说第三种的使用步骤~
1.首先在methods中添加方法:
methods: {
cancelRequest(){
if(typeof this.source ==='function'){
this.source('终止请求')
}
}
}
2.在请求开始前缓存this,并且调用上面方法,取消请求
var that = this;
this.cancelRequest();
3.请求时给axios传入第二个参数;
this.axios.get('请求路径', {
cancelToken: new this.axios.CancelToken(function(c) {
that.source = c;
})
}).then((res)=>{
//正常响应需要做的处理
}).catch((err) => {
if (that.axios.isCancel(err)) {
console.log('Rquest canceled', err.message); //请求如果被取消,这里是返回取消的message
} else {
//handle error
console.log(err);
}
})
以上就完成了