CancelToken——取消请求
1.使用方法,封装一个方法请求
我得项目结构
request: 封装得axios请求, 拦截器 响应头什么得 都在这里面
ajax.js 写了几种 请求方式
ajax.js 下面就单独拿了post请求来说
import request from "./request";
import axios from "axios";
import store from "../store";
export default {
ajaxPost: (par, url, cancel = {}) => {
//如果存在 就中止
if (cancel.cancel) cancel.cancel();
//post请求
return request({
url: url,
method: "post",
// data: qs.stringify(par),
data: par,
headers: {
Authorization: "Bearer " + store.state.token
},
//中止请求
cancelToken: new axios.CancelToken(function executor(c) {
cancel.cancel = c;
})
});
},
}
api: 接口
api.js
import ajax from "../ajax";
import self from "@eventBus/eventBus";
export default {
// 修改浏览量
postReadNum(param, callback, cancel = {}) {
ajax.ajaxPost(param, "/home/postReadNum", cancel).then(res => {
callback(res.result);
});
}
};
最后调用
data(){
return {
cancel: {}, // 声明一个对象
}
}
//方法
postNum() {
this.api.home.postReadNum({}, res => {}, this.cancel);
}
//掉用
created() {
this.postNum();
this.postNum();
this.postNum();
},
效果:只执行了一次
如果我们不传cancel,请求了3次