Angular2アプリから3つのWebサービスを呼び出す必要があり、それらをチェーンする必要があります。両方とも一緒に呼び出すことができるので、私はforkJoinを使います。しかし、後で、サービスの1つから返されたIDを使用して別のサービスを呼び出す必要があります。 最後のサービスをforkJoinの結果と連鎖させる適切な方法はどれですか?RxJs5 in Angular:データを変換しないObservableを連鎖させる適切な方法はどれですか?
私はflatMapを使用できますが、この最後のサービスはforkJoinから得られたものを変換しません(mapとflatMapは変換演算子と呼ばれます)。返されたデータを何かに変換するときにのみ使用してくださいelse)。
私はforkJoinを購読し、成功した場合は最後のサービスに再度購読する(私はそれが気に入らない)?または、Zip(またはZipAll)演算子を使用する必要がありますか? ありがとうございます。
編集:私は例を挙げます。
getProject(projectId)
: レッツは、私はいくつかのプロジェクト情報を取得する必要があり、私は3つのサービスを持っていると言い、そのタイトルのようなプロジェクトに関する情報、期間、...そして、いくつかのプロパティを持つprojectPropertiesIdプロジェクトを取得します持てる。getProperties()
:プロジェクトが持つことができるすべてのプロパティのリストを取得します。getProjectProperties(propertiesId)
:選択したプロパティのリストを取得します。 一つの解決策が考えられます。あなたはforkJoinを持った後
this.subscriber1 = Observable.forkJoin(this.projectService.getProject(projectId), this.projectService.getProperties())
.subscribe(data => {
this.project = data[0];
this.properties = data[1];
this.subscriber2 =
this.projectService.getProperties(this.project.propertiesId)
.subscribe(selectedProperties => {
// save the selected properties...
}
});
は、より良いすべきではない、別の内の加入者を持っている代わりに、チェーンに最後のサービスコール(projectService.getPropertiesを)ジップ演算子を使用します加入者?
残念ながら、現在のところ、スタックオーバーフローへようこそ、答えは:それは依存しています。多分、あなたがしたことを私たちに示すコードを追加することができます。あなたが達成しようとしていることを理解することがより簡単になります。 – n00dl3
_ "3つのWebサービスを呼び出す必要があります" _ _ _ "両方とも" 3か2か? _私はそれらを連鎖する必要があります_ _ _ "私はforkJoinを使用しています" _チェーンやフォーク?例が役に立つでしょう。 – zeroflagL
私は例を使って質問を編集しました... –