J'ai une application qui fait 3 demandes HTTP et chaque demande repose sur les informations des autres. Actuellement je fais la prochaine demande sur le succès mais c'est inefficace. Je l'ai fait quelques recherches et trouvé que je suis censé être en utilisant flatmap
mais deux façons j'ai essayé ne faites pas les requêtes http à l'apiComment flatmap correctement trois demandes HTTP
C'est ce que je l'ai essayé, mais il ne renvoie rien
return this.info.getLastRecord(this.station)
.map((res: any) => res.json()
.flatMap((info: any) => {
return this.info.getQueue(this.lastID)
.map((res: any) => {
console.log(res.json());
});
}));
Ce travail ne marche pas non plus
return this.info.getLastRecord(this.station)
.map((res: any) => res.json()
.flatMap((res: any) => {
return this.info.getQueue(this.lastID)
.map((res: any) => {
console.log(res);
});
}));
Voici comment je fais actuellement les appels
this.getInfoService.getLastRecord(this.station)
.subscribe(
(info) => {
console.log("res", info);
},
(error: Response) => console.log(error),
() => this.getQueue()
);
getQueue() {
this.info.getQueue(this.lastID)
.subscribe(
(info) => {
console.log("getQueue", info);
},
(error: Response) => console.log(error),
() => this.gHTDG())
}
getHookTypeDieGroup() {
this.info.getHookTypeDieGroup(this.profileCode)
.subscribe(
(info) => {
console.log("GHTDG", info);
},
(error: Response) => console.log(error)
);
}
info.service.ts
getLastRecord(station: string): any {
return this.http.get('http://API.app/getLastRecord/' + station)
.map(
(response: Response) => {
return response.json().info;
},
).share();
}
getQueue(lastID: number): any {
return this.http.get('http://API.app/getQueue/' + lastID)
.map(
(response: Response) => {
return response.json().info;
}
)
.share();
}
gHTDG(pCode: string): any {
return this.http.get('http://API.app/getHTDG/' + pCode)
.map(
(response: Response) => {
return response.json().info;
}
).share();
}
J'ai créé un plnkr et ajouté à la réponse . Je pense que ça fonctionne comme vous le voulez. –