还可以做进一步优化:
1、装载所有的请求中数据,初始化为 [] 空数组,
2、在push时,push({'url':***,'cancel':cancelToken})
//像这样存入,当前请求的url和当前的取消方法,形成映射
3、在执行某个改变原始数据源的请求时,为防止前一个还在运行但尚未完成的请求的影响,可以根据
当前url去所有请求未完成的集合中找到它并取消请求,然后从集合中移除该信息
*测试发现,这里的取消,并不是取消请求:因为请求已经发出了,服务器也已经在处理,只是回传消息的时候打上了标记,因此在catch模块输出Cancel
1、前台输出2次
2、后台输出多次
欢迎大家去验证:后台加个Thread.sleep(3000);,可以模拟网络延迟
var vm=new Vue({
el:"#div_id",
data:{
cancelTag:[], //装所有的想要准备移除的请求,用处:当你离开这个页面时,将取消这个页面发出 的未完成的所有请求
cancelCurrentTag:null, //放置的是前一个单独的请求,用处:有时只想对某一个可能未完成的请求,让它取消
},
methods:{
post:function(){ //post请求
var CancelToken =