javascript - recursividad - recursión ciencias de computación
Consulta recursiva angular de $ recursos (1)
Escribí un ejemplo jsfiddle para mostrar promesas recursivas. Al convertirlo en tu ejemplo, se vería algo así como:
function getList(resource, list, last) {
return resource.query({last: last}).$promise.then(function(data){
list = list.concat(data.list);
if (data.next) {
return getList(resource, list, data.last);
}
return list;
});
}
getList(Items1, [], 0).$promise.then(function(list) {
$scope.items1 = list;
});
getList(Items2, [], 0).$promise.then(function(list) {
$scope.items2 = list;
});
Necesitará modificar sus recursos angulares para permitirle pasar el last
parámetro en la llamada a la API. Supongo que la API, si se proporciona con ese parámetro, devolverá la siguiente sección a partir de ella.
Desde la API en la que estoy trabajando necesito tomar 2 listas diferentes y debo tomar partes de 20 elementos para evitar los tiempos de espera del servidor.
Lo que construí en realidad es esto:
Items1.query().$promise
.then(function (data) {
$scope.items1 = data.list;
return Items2.query().$promise;
})
.then(function (data) {
$scope.items2 = data.list;
});
Con este código estoy descargando la lista completa de objetos.
Tanto la consulta devuelve:
{
list: [...],
next: true,
limit: 20,
last: 20
}
Básicamente es un sistema de paginación.
Ambos servicios son así:
App.factory(''Items1'', [''$resource'',
function($resource) {
return $resource(''items1/:item1Id'', { storeId: ''@id''
}, {
query: {
method: ''GET'',
isArray: false
},
update: {
method: ''PUT''
}
});
}
]);
Realmente no sé cómo hacer una función recursiva con $ resource para poder empujar esos elementos en partes de 20.