Comment attendre deux phénomènes observables dans les RxJS
Dans mon application j'ai quelque chose comme:
this._personService.getName(id)
.concat(this._documentService.getDocument())
.subscribe((response) => {
console.log(response)
this.showForm()
});
//Output:
//[getnameResult]
//[getDocumentResult]
//I want:
//[getnameResult][getDocumentResult]
Puis-je obtenir deux séparés résultats, d'abord de la _personService
et puis le _documentService
. Comment puis-je attendre les résultats avant de les appeler this.showForm()
pour finir ensuite de manipuler les résultats de chacun.
forkJoin github.com/Reactive-Extensions/RxJS/blob/master/doc/api/core/...
pour ce que je comprends, vous l'êtes déjà, en vertu de
Dans ce cas, les valeurs sont émettant séparément. L'un après l'autre.
dans forkJoin' abonnez-vous obtiendrez un résultat - tuple avec les première et deuxième réponses - c'est exactement ce que vous avez demandé?
vous pouvez regarder forkJoin de mon blog - medium.com/@juliapassynkova/q-map-to-rxjs-981936a2b22d
pour ce que je comprends, vous l'êtes déjà, en vertu de
concat
Dans ce cas, les valeurs sont émettant séparément. L'un après l'autre.
dans forkJoin' abonnez-vous obtiendrez un résultat - tuple avec les première et deuxième réponses - c'est exactement ce que vous avez demandé?
vous pouvez regarder forkJoin de mon blog - medium.com/@juliapassynkova/q-map-to-rxjs-981936a2b22d
OriginalL'auteur gog | 2017-05-16
Vous devez vous connecter pour publier un commentaire.
Mise À Jour: Oct, 2018
Je l'ai déjà suggéré l'utilisation de
zip
méthode. Cependant, depuis lors, je me suis retrouvé à l'aide decombineLatest
à la place. Il a donc décidé de l'ajoutercombineLatest
.CombineLatest
émet de la dernière émises valeurs à partir des observables. Alors quezip
méthode émet émis des éléments dans séquence commande.Par exemple, si observables #1 émet son 3ème élément observable et #2 a émis son 5e élément. Le résultat à l'aide de
zip
méthode sera la 3ème émis des valeurs des deuxobservables
.Dans cette situation le résultat à l'aide de
combineLatest
sera le 5e et 3ème. qui se sent plus naturel.combineLatest(observables)
De reactiveX la documentation:
Observable.zip(observables)
Observable.zip la méthode est expliquée dans reactiveX documentation:
une note de côté (s'applique pour les deux méthodes)
Le dernier paramètre, où nous avons fourni une fonction,
(name: string, document: string) => ({name, document})
est facultatif. Vous pouvez ignorer, ou faire des opérations plus complexes:Donc, si vous passez la dernière partie, vous obtenez un tableau:
OriginalL'auteur Hamid Asghari
Utilisation
forkJoin()
méthode des observables. Suivez ce lien pour référenceDe la RXJS docs
Code tiré de: https://coryrylan.com/blog/angular-multiple-http-requests-with-rxjs
Si tu veux faire qqch. après l'obtention d'un observable, vous pouvez utiliser l'imbrication de l'abonnement?
OriginalL'auteur Prathmesh Dali
Pour moi ce l'échantillon était la meilleure solution.
Donc.. ce n'est que lors de la seconde (exemple) émettent - vous allez voir le dernier dégager de la valeur de la première (source).
Dans ma tâche, j'attends la validation d'un formulaire et d'autres événements DOM.
OriginalL'auteur Олег Беликов
Vous pouvez utiliser l'option " zip " ou "tampon" comme suit.
OriginalL'auteur thatseeyou
Ont un look à la 'combineLatest " méthode", il pourrait être approprié ici.
http://reactivex.io/rxjs/class/es6/Observable.js~Observables.html#static-méthode-combineLatest
OriginalL'auteur Tal