showNodes: function(clusterId){
let _this = this;
_this.nodes=[];
//获取节点信息
ClusterApi.getClusterNode({"id": clusterId}).then(function(res) {
$.each(res.data.records,function(i,item){
_this.nodes.push({label: item.name, value: item.name,disabled:false});
});
});
}
js中有以上showNodes函数,函数里的异步请求多次调用,第二次调用时发生一些问题导致nodes中出现了重复数据。可能的原因有:
1)调用时机:第一次调用函数 showNodes 时数组 nodes 被重置为空数组 []。如果多次调用至第二次请求执行时,首次调用还未完成,那么数组 nodes 中将不会有数据。会导致第二次请求获取到的可用数据不足,从而出现重复的数据。
2)数据加工:第二次请求获取的数组 res.data.records 的项和第一次请求的项也可能有重复。因为在第二次请求时,第一次请求获取的所有数据可能仍未完全处理完成,因此新获取的数据项将会与已请求数据进行合并,从而导致数据重复。