Mise À Jour: Oct, 2018
J'ai déjà proposé l'utilisation d' zip
méthode. Cependant, depuis lors, je me suis retrouvé à l'aide d' combineLatest
à la place. Donc décidé d'ajouter combineLatest
.
CombineLatest
émet de la dernière émises valeurs à partir des observables. Alors qu' zip
méthode émet émis des éléments dans la séquence de commande.
Par exemple, si observables #1 émet son 3ème élément observable et #2 a émis son 5ème élément. Le résultat à l'aide d' zip
méthode sera la 3ème émises valeurs à la fois observables
.
Dans cette situation, le résultat à l'aide d' combineLatest
sera le 5ème et 3ème. qui se sent de plus naturel.
combineLatest(observables)
De reactiveX de la documentation:
Chaque fois qu'une entrée Observables émet une valeur, on calcule une formule en utilisant les dernières valeurs de toutes les entrées, puis émet de la sortie de cette formule.
// Observables to combine
const name$ = this._personService.getName(id);
const document$ = this._documentService.getDocument();
combineLatest(name$, document$, (name, document) => ({name, document}))
.subscribe(pair => {
this.name = pair.name;
this.document = pair.document;
this.showForm();
})
Observable.zip(observables)
Observable.zip la méthode est expliquée dans reactiveX de la documentation:
Combine plusieurs Observables pour créer une Observable dont les valeurs sont calculées à partir des valeurs, dans l'ordre, de chacun de ses intrants Observables.
// Observables to combine
const name$ = this._personService.getName(id);
const document$ = this._documentService.getDocument();
Observable
.zip(name$, document$, (name: string, document: string) => ({name, document}))
.subscribe(pair => {
this.name = pair.name;
this.document = pair.document;
this.showForm();
})
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:
Si le dernier paramètre est une fonction, cette fonction est utilisée pour calculer la valeur créée à partir des valeurs d'entrée. Sinon, un tableau des valeurs d'entrée est retourné.
Donc, si vous passez la dernière partie, vous obtenez un tableau:
// Observables to combine
const name$ = this._personService.getName(id);
const document$ = this._documentService.getDocument();
Observable
.zip(name$, document$)
.subscribe(pair => {
this.name = pair['0'];
this.document = pair['1'];
this.showForm();
})