在项目中,遇到从一个接口中要得到部分数据,在将这个数据作为另一个接口里的参数。之前只想到for循环,死都做不出来,因为for循环是同步的。只用用递归方法,因为它是异步的。看来看得懂别人写的递归和自己在项目用递归不是一回事,自己还有很多需要学的,用的。
vue
methods: {
getData() {
var that = this;
var obj = {
url: GI.api.base + GI.api.comment.list,
data: {
uid: this.base.id,
pagenum:1,
pagesize:10
}
};
GI.req(obj, function(rst) {
that.review = rst.data;
//这里就用闭包,将review中每条数据中增加两个key,分别是orderMsg,orderCover 。如果后台的数据没有,跳过这个条数据,执行函数error
var i = 0, l = that.review.length;
var orderGet = function(){
if(i < l) {
let obj = {
url: GI.api.base + GI.api.order.get,
data: {
id: that.review[i].orderId
}
}
GI.req(obj, function(rst) {
that.$set(that.review[i], 'orderMsg', JSON.parse(rst.skuMsg)[0]);
that.$set(that.review[i], 'orderCover', rst.spuObj.cover);
i++;
orderGet();
}, function(err) {
i++;
orderGet();
});
}
}
orderGet();
}.bind(this));
},