我有这个:
parallel --xapply --eta python sub_sample_.2.py ::: file1 file3 file5 ::: file2 file4 file6
我的问题在评论:)中为“j ++”。 如果我删除循环而硬编码3步,它就可以工作了。但我不知道如何用循环解决问题。你有好主意吗 ?感谢
答案 0 :(得分:3)
根据OP的评论同步解决方案:
var promises = [];
for(var i=0;i<self.myList.length;i++)
promises.push($http.post(...));
$q.all(promises).then(function(results){
//All results available here
var data = results.map(result => result.data);
data.forEach((e, idx) => self.myList[idx] = e);
})
.catch(function(e){
//Handle error
});
答案 1 :(得分:1)
问题是
$http.post().then(function(){}, function(){})
是异步函数。因此,循环完成时将执行.then()
方法。这就是它总是取j的最后一个值为2的原因。then()
只会$http.post()
来一次,所以删除第二个.then()
解决方案发布在下面:
var j = 0;
var i = 0;
// myList.length = 3
while(j < self.myList.length - 1){
$http.post('myURL', self.myList[j].code).then(function(response){
self.myList[i].plop = response.data;
i++;
}, function(){
// error
}
);
}