Angular2 - Faire de la chaîne d'async appels de service (requêtes http) dans un composant?
J'ai un composant qui, la première, plus besoin d'appeler un service de POSTER quelque chose. Puis, dans le même composant que je veux attendre jusqu'à ce que le POSTE est fait pour appeler un autre service qui Reçoit les données.
Comment puis-je faire l'OBTENIR de l'appel en attente pour le POSTE d'appel à la fin?
En nouvelle-version.composante.ts:
private createNewVersion(value) {
...
//create new version, then call on all available versions
//POST call
this._newVersionService.createNewVersion(vnr);
//GET call
this._versionService.getAvailableVersions();
...
}
En nouvelle-version.service.ts:
export class NewVersionService {
response$: Subject<any>;
constructor(private _http: Http) {
this.response$ = new BehaviorSubject<any>(null);
}
public createNewVersion(versionNr) {
this._http.post('http://localhost:8080/services/' + versionNr, null, {
method: 'POST',
})
.subscribe(response => {
this.response$.next(response.status);
},
error => console.error(error));
}
Merci!
J'ai un exemple de chaîne, appel ici:syntaxsuccess.com/viewarticle/angular-2.0-and-http Mon exemple est un get, mais vous pouvez le changer pour un post
OriginalL'auteur Sojye | 2016-02-03
Vous devez vous connecter pour publier un commentaire.
Lorsqu'un appel renvoie une
Promise
de la chaîne d'appels avecVous assurer d'avoir une
return
qui renvoie laPromise
de la chaîne de l'appelant desomeFunc()
a aussi une chance pour le temps de travail supplémentaire à exécuter après l'doSomethingAfterThat()
est terminé.Lorsqu'un appel renvoie un
Observable
puis utilisez lecomplete
rappeldoSomethingNext()
est exécutée après la dernièreevent
etdoSomethingAfterThat()
est de nouveau enchaîné avecthen()
de montrer comment mélanger observables et de la promesse.doSomething()
.OriginalL'auteur Günter Zöchbauer
Vous devriez être en mesure de
concat
pour réaliser la séquence, etreduce
pour recueillir les émissions de valeurs:OriginalL'auteur pixelbits
Vous pouvez le faire comme ceci:
Changement createNewVersion:
Puis dans votre appel:
OriginalL'auteur Vlado Tesanovic
Une autre façon de faire de même est-à -
subscribe
dans lenew-version.component.ts
et de vous appelerGET
demande à partir de l'intérieur de laPOST
demande, je.e vérifiez si votrePOST
demande est effectuée Correctement ou passi oui
POST
est fait Correctement, alors vous appelerGET
demande. Comme ci-dessous:En nouvelle-version.composante.ts:
En nouvelle-version.service.ts:
pour plus d'informations liées à la
http
demande, vous pouvez lire ici.Avez-vous jamais lu de votre propre code? Votre code est illisible. C'est probablement la raison
OriginalL'auteur Pardeep Jain
Mieux utiliser
switchMap()
ici.Mais le problème va être si vous faites un autre POST demande avant la première a été résolu, la demande sera annulée.
OriginalL'auteur ritz078