我有两个工厂如下:
angular.module('categoryResource', ['ngResource', 'userResource'])
.factory('categories', function ($http, users){
var factory = {};
factory.getCategories = function () {
return $http.get('/api/userCategories');
};
factory.getCategoriesUsers = function () {
//call factory.getCategories(), parse the request to make it nice and tidy
//then call users.getUsers(), tidy them up in the same way as categories, join them together and return them all in a nice package.
};
var handleCategoriesUsers = function (data, status) {
}
return factory;
});
angular.module('userResource', ['ngResource'])
.factory('users', function ($http) {
var factory = {};
factory.getUsers = function () {
return $http.get('/api/users');
};
return factory;
});
我已经使用类别创建了一个漂亮的treeView,但我还希望将用户添加到这些类别中;所以为此我想我只是将用户格式化为我的treeView算法已经可以使用的东西。
我的问题是,我可以在类别工厂(或者甚至是完全不同的模块/工厂)中以某种方式进行此操作,并且只是同时返回连接的结果吗?如果有,怎么样?我是否需要像往常一样为$ http.get定义处理程序?那么在那个处理程序中,调用另一个get然后为它定义一个处理程序然后返回结果?
答案 0 :(得分:1)
我并非100%确定我理解这个问题,但你看过$ q.all吗?您似乎希望将多个承诺组合/组合成一个易于处理的单一包。我给你一个描述和一些代码示例,但egghead做得更好:https://egghead.io/lessons/angularjs-q-all
这是你正在寻找的吗?
编辑:如果只是倾销链接,那就不赞成了:
var all = $q.all([one.promise, two.promise, three.promise]);
all.then(success)
function success(data) {
console.log(data);
}