У меня есть служба AngularJS, которая использовала для получения отдельных контактов (/contacts/:id
) на основе индекса (/contacts
):
app.service("CollectionService", function($http, $q) {
this.fetch = function(collectionURL) {
return $http.get(collectionURL).then(function(response) {
var urls = response.data;
var entities = urls.map(function(url) {
return $http.get(url);
});
return $q.all(entities);
}).then(function(responses) {
return responses.map(function(response) {
return response.data;
});
});
};
});
// used within the controller:
CollectionService.fetch("/contacts").then(function(contacts) {
$scope.contacts = contacts;
});
Результаты отображаются в простом списке (<li ng-repeat="contact in contacts">{{ contact }}</li>
).
Однако из-за использования $q.all
этот список не обновляется до тех пор, пока не будет получен последний (самый медленный) ответ. Как можно перейти от этого массового обновления к инкрементальным обновлениям при получении отдельных контактов?