我的$ q.all()工作正常。以下代码在我的主要服务中,完成后所有内容都会正确返回给控制器。但是,我试图预先排序返回到控制器的最终数组,它不起作用。 sort函数本身也可以工作 - 它在我的控制器中用来手动对模板页面上的结果进行排序。它只是初步的结果没有回来排序。
我知道它是一个异步问题,但无法确定返回结果之前需要排序的位置。
// SERVICE
var groups = [] ;
$q.all([promise1(),promise2(),promise3(),promise4(),promise5(),promise6()]).then(function(response){
var z=0 ;
for (var y=0;y<response.length;y++) {
// process each promise as a complete
// value: [0][{a:1,b:2,c:3},{a:4,b:5,c:6}],
// [1]:[{a:7,b:8,c:9},{a:10,b:11,c:12}]
for (var x=0;x<response[y].length;x++) {
// process the components of each promise
// value [{a:1,b:2,c:3},{a:4,b:5,c:6}]
response[y][x].ID = z++ ; // reassign primary 'list' ID
groups.push(response[y][x]) ; // push preformatted component
// to 'groups' to be passed
// back to controller
}
}
var sortType = getDB("sortOption") ;
sortGroups(sortType) ; // global 'groups' is already
// in 'sortGroups()'
});
return {
all: function() {
return [groups,sortType] ;
}
// CONTROLLER
$scope.groups = ServiceGroups.all() ;
在控制器中,总是返回'groups',而不是排序。