Attendre sur RxJs.Les abonnements à terminer avant de reprendre

Dans mon Angulaire 2 application, j'ai besoin de faire une série de requête http. J'ai deux services, Un & B, que chacun en fait la demande, A.get() et B.get(), qui récupère les données à partir de l'API et les stocke dans le service. Ces deux fonctions peuvent être appelées en même temps, toutefois, j'ai une troisième demande doSomething() qui dépend des résultats de A.get() et B.get(). Depuis deux A.get() et B.get() de stocker leurs réponses localement leur valeur de retour finit par être le RxJs Abonnement. Comme:

class A{
  public data;
  public get(){
    return api.call(params).subscribe((response)=>{ this.data = response.json();})
  }
}

class B{
  public data;
  public get(){
    return api.call(params).subscribe((response)=>{ this.data = response.json();})
  }
}

Mon composant ressemble à quelque chose comme ceci:

class MyComponent{
  constructor(private a: A, private b: B){
    a.get();
    b.get();
    this.doSomething(a.data, b.data);
  }
  doSomething(aData, bData){
    ...
  }
}

Mon problème est doSomething() échoue parce que a.get() et b.get() ont achevé il y a de la requête http pourtant. J'ai besoin d'un moyen de tenir à l'appel de doSomething() jusqu'à ce que mes autres appels ont terminé. J'ai rechercher partout mais n'ai pas eu de chance avec cette question. RxJs documentation donne un peu de moyens, vous pouvez fusionner Observables mais ce n'est pas ce que j'ai dans ce cas.

OriginalL'auteur tanspac | 2017-02-09