J'ai un service dans une application angulaire 4 qui récupère un nombre variable de pages à partir d'une API back-end.Comment récupérer des requêtes HTTP paginées à partir d'une API backend à l'aide d'Observables dans Angular4
J'ai regardé la réponse ici Angular 2 - Chaining http requests, ce qui suggère d'utiliser un flatMap, mais cette approche ne fonctionne pas car elle nécessite que toutes les demandes soient connues au préalable. Cela ne fonctionnera pas dans mon cas puisque le nombre de requêtes et l'URL de chaque requête est dynamique et inconnu.
Le nombre de pages/demandes est déduit du résultat de la demande précédente. Donc, si la requête précédente renvoie quelque chose, la page suivante est demandée pour voir s'il y a plus d'éléments.
J'ai essayé le suivant
this.items = [];
_fetch(url, page) {
this.http.get(`${url}&pageSize=2&page=${page}`).subscribe(response => {
this.items.concat(response.json().items)
// if the list of items is not empty fetch another page
if (response.json().items.length > 0) {
this._fetch(url, ++page);
}
});
return Observable.of(this.items);
}
Cependant this.items
est retourné avant que les demandes ont une chance de remplir il est toujours retourné comme une liste vide.
des idées?
Regardez ceci: https://stackoverflow.com/questions/40529232/angular-2-http-observables-and-recursive-requests –
la réponse liée en double ne résout pas ce problème. la question n'est pas un doublon –