我有这种情况,我会逐个点击API,这是我提出的:
GridServices.getProjects(data[1].status_id, vm.myProject)
.then(function(data){
vm.myData1 = data;
vm.counter[1] = data.length;
$scope.statusTypes[1].projects = vm.myData;
}).then(function(){
GridServices.getProjects(data[2].status_id, vm.myProject)
.then(function(data){
vm.myData2 = data;
vm.counter[2] = data.length;
$scope.statusTypes[2].projects = vm.myData;
})
}).then(function(){
GridServices.getProjects(data[3].status_id, vm.myProject)
.then(function(data){
vm.myData3 = data;
vm.counter[3] = data.length;
$scope.statusTypes[3].projects = vm.myData;
})
}).then(function(){
GridServices.getProjects(data[4].status_id, vm.myProject)
.then(function(data){
vm.myData4 = data;
vm.counter[4] = data.length;
$scope.statusTypes[4].projects = vm.myData;
})
}).then(function(){
GridServices.getProjects(data[5].status_id, vm.myProject)
.then(function(data){
vm.myData5 = data;
vm.counter[5] = data.length;
$scope.statusTypes[5].projects = vm.myData;
})
}).then(function(){
GridServices.getProjects(data[8].status_id, vm.myProject)
.then(function(data){
vm.myData8 = data;
vm.counter[8] = data.length;
$scope.statusTypes[8].projects = vm.myData;
})
}).catch(function(err, msg){
console.log(err);
});
});
基本上它一个接一个地触及API,但它有点手动,有没有办法可以在循环中设置它,以便逐个自动链接查询,(承诺全部不是我在这里寻找的,因为我需要查询才能进入,直到一个完成)
感谢您的任何想法或建议,我正在学习解决此类问题的更好方法。
干杯
答案 0 :(得分:1)
如何设置函数来执行有条件地调用下一次迭代的数据检索。例如
var getProjectIteration = function(i) {
return GridServices.getProjects(data[i].status_id, vm.myProject).then(function(data) {
vm['myData' + i] = data;
vm.counter[i] = data.length;
$scope.statusTypes[i].projects = vm.myData;
if (i < 8) {
return getProjectIteration(i++);
}
});
};
getProjectIteration(1).catch(function(err, msg) { ... });