Javascript 处理从$q.all返回的结果
对于$q.all返回的结果应该如何处理,我有些困惑 这是我的密码Javascript 处理从$q.all返回的结果,javascript,angularjs,Javascript,Angularjs,对于$q.all返回的结果应该如何处理,我有些困惑 这是我的密码 var pageLoad = function () { var pageLoadPromises = [ youEmployerData.getEmployerPrograms($scope.employerId), youEmployerData.getWorksites($scope.employerId) ]; $q.
var pageLoad = function () {
var pageLoadPromises = [
youEmployerData.getEmployerPrograms($scope.employerId),
youEmployerData.getWorksites($scope.employerId)
];
$q.all(pageLoadPromises)
.then(function (results) {
$scope.programs = results[0];
$scope.worksites = results[1];
$scope.appLoaded = true;
}, function (r) {
handleResourceError(r);
});
};
以下是我实际的资源调用
you.factory('youEmployerData', function ($resource) {
return {
getEmployerPrograms: function(employerId) {
return $resource("/api/programs/getemployerprograms?employerId=:id").query({ id: employerId });
},
getWorksites: function (employerId) {
return $resource("/api/employer/getworksites?employerId=:id").query({ id: employerId });
}
}
}
我已经验证了我的资源调用是否正常工作,我只知道我在然后(函数(结果){
中做了一些错误的事情-我只是不太确定如何处理这些数据
另外-$scope.worksites
应该是返回的工作站点数组,$scope.programs
应该是程序数组
如果您有任何问题或需要进一步澄清,请告诉我
这是控制台.log(results)的屏幕截图,它看起来是正确的,结果[0]只有1项和结果($scope.worksite)-有多个项目,唯一的问题是有些东西不工作,因为$scope.worksites没有在屏幕上正确输出,就像数组不正确或其他什么。抱歉-难以描述
可能是因为您忽略了$resource对象不是承诺的事实?您可以尝试以下方法:
var pageLoadPromises = [
youEmployerData.getEmployerPrograms($scope.employerId).$promise,
youEmployerData.getWorksites($scope.employerId).$promise
];
当您使用console.log结果时,您会看到什么?谢谢-这修复了它:)