问题描述
接手一个老项目,测试提出来的问题,说搜索条件变化时,数据显示的有问题!,我看代码逻辑没有问题,接口数据都正常返回了
原因分析
我看请求貌似最下面的响应时间比上面的快,最终找到根源问题:3个请求依次(POST1、POST2、POST3)发送,但是3个请求的响应时间不同,按照响应时间排序(POST3、POST2、POST1),然后页面请求回来的数据最终被最后一个给覆盖了,感觉是因为项目里axios没有中断请求的操作导致的
解决问题
第一种是axios里弄强制中断请求CancelToken,感觉太麻烦!
第二种是加个时间戳
组件中代码 `
data(){
return {
timestamp: 0,//时间戳初始值
}
},
methods:{
getParamsPost(url, data).then((res) => {
//当请求时的时间戳大于上一次的时候就赋值
if (res.timestamp > this.timestamp) {
//每次请求完把时间戳赋值
this.timestamp = res.timestamp;
this.tableData = res.data.list;
this.listQuery.pageNum = res.data.pageNum;
this.listQuery.pageSize = res.data.pageSize;
this.total = res.data.total;
this.listLoading = false;
}
}).catch(() => {
this.listLoading = false;
});
}
` axios中的代码如下:
大佬们还有没有其他简单的方式没