複数のコールが作成されており、別のページにルーティングする前にすべてのコールが完了するのを待つ必要があります。私が実行している問題は、典型的にはWebサービス呼び出しを入れ子にしているということですが、この場合、ユーザーの入力に基づいて呼び出されるかどうかは別々の呼び出しがあります。新しいページにルーティングする前に呼び出される場合と呼び出されない場合があるすべての呼び出しを待つ方法観察が完了するのを待つ方法は?角2
submitButton_Clicked() {
this.busy = this.service.call1() // must be called
.first().subscribe(
if (success){
// **Logic to decide if call 2 is needed**
...
this.busy = this.service.call2() // might be called
.first().subscribe();
// **Logic to decide if call 3 is needed**
...
this.busy = this.service.call3() // might be called
.first().subscribe();
this.router('route'); // should route after all potential calls
}
);
}
私はobservablesには新しいので、これを実行する最良の方法は何か分かりません。助けてくれてありがとう!
あなたが約束を使用していた場合、あなたはこれを達成するためにpromise.allを使用することができます。しかし、私はそれがあなたの後の答えではないことがわかります。 – n00b
それぞれを条件付きで購読するのではなく、それぞれを条件付きで自分自身または空の観測可能なものにマッピングし、これらの可能性のある空のストリームをすべて新しいストリームにマージまたは連結し、reduceおよびsubscribeを呼び出します。 –
http://stackoverflow.com/documentation/rxjs/8247/common-recipes/28035/sending-multiple-sequential-http-requests#t=201702081844368442112またはhttp://stackoverflow.com/documentation/rxjs/8247を参照してください。 /共通レシピ/ 27973 /送信複数並列httpリクエスト#t = 2017020818445186661 – martin