EDIT
The first answer is the elegant one, but, as stated a few times in this question and another questions on stackoverflow, the problem is that th
IMHO I think there's a much clever (and elegant) way to do this with $q.all
.
Please take a look at the code below.
I am assuming that you want to return the data at once with all the results aggregated on a big array.
var myApp = angular.module('myApp', []);
myApp.factory('myService', function ($http, $q) {
return {
getAllData: function () {
return $q.all([
$http.get('../wordpress/api/core/get_category_posts/?category_id=14'),
$http.get('../wordpress/api/core/get_category_posts/?category_id=15'),
$http.get('../wordpress/api/core/get_category_posts/?category_id=16'),
$http.get('../wordpress/api/core/get_category_posts/?category_id=17')
]).then(function (results) {
var aggregatedData = [];
angular.forEach(results, function (result) {
aggregatedData = aggregatedData.concat(result.data);
});
return aggregatedData;
});
}
};
});
You can see above that the aggregatedData
is only generated once all the async calls are completed via the $q.all
.
You just need to include the service as dependency into one of your controllers, for example, and call the service like this myService.getAllData()
Hope that helps or just let me know if you need a full working example and I can provide one! :)