我试图循环一个对象,然后从两个服务API函数中提取每个迭代的数据,然后返回数据并用返回的结果填充当前的迭代对象。现在,由于这些服务函数使用的是$http对象,所以将返回承诺,因此我需要等待响应才能填充对象。
这是我第一次使用$q AngularJS库,我不确定我是否能够以使用它的方式使用它。它没有正确地返回,所以我假设我没有,我似乎不能让我的代码工作。
这是我的代码:
控制器功能
$scope.returnTasksAndPayments = function() {
var defer = $q.defer();
var promisesTasks = [];
var promisesPayments = [];
for(var i in $scope.projects) {
promisesTasks[i] = ProjectService.fetchTaskData($scope.projects[i].project_id);
promisesPayments[i] = ProjectService.fetchPaymentsData($scope.projects[i].project_id);
}
$q.all(promisesTasks, promisesPayments).then(function(promiseArray) {
console.log(promiseArray);
});
};
我的服务职能是:
this.fetchProjectsData = function(options) {
return api().get("http://dashboards.blurgroup.dev/src/projectPayments/services/JSONdata.json", {
order : options.order,
page : options.page,
page_size : options.page_size,
status : options.status,
search : options.search,
assigned : options.assigned
});
};
this.fetchTaskData = function(options) {
return api().get("http://dashboards.blurgroup.dev/src/projectPayments/services/JSONdataTasks.json", {
});
};
this.fetchPaymentsData = function(options) {
return api().get("http://dashboards.blurgroup.dev/src/projectPayments/services/JSONdataPayments.json", {
});
};
正如您所看到的,我正在尝试遍历我的$scope.projects对象,为每次迭代调用这两个函数,并将它们放入单独的允诺对象中,然后使用$q.all来检查这两个承诺对象是否已经实现。
这似乎不像应该的那样工作,而且似乎存储在$q.all函数中的‘$q.all’数组中的数据没有添加到$q.all回调数组中的promiseArray变量中。
有人能指出我哪里出了问题吗?谢谢
发布于 2015-05-01 08:22:59
试试这个:
var promisesTasksAll = $q.all(promisesTasks);
var promisesPaymentsAll = $q.all(promisesPayments);
$q.all([promisesTasksAll, promisesPaymentsAll]).then(function(data){
//data[0] will contain promisesTasks data
//data[1] will contain promisesPayments data
});
发布于 2015-05-01 08:10:20
尝试将两个数组合并到一个大数组中,并将其传递给串接 ()。
或者如果你需要分离回来的数据,嵌套你的解决方案,
$q.all(promisesTasks).then(function(promiseTaskData) {
console.log(promiseTaskData);
$q.all(promisesPayments).then(function(promisePaymentsArray) {
console.log(promisePaymentsArray);
});
});
$q.all(promisesTasks, promisesPayments)
是一个嵌套数组[[],[]]
,$q.all()不喜欢它
https://stackoverflow.com/questions/29990378
复制