1
私のアプリケーションには2つのサービスエンドポイントがあります。a
とb
(どちらも「シングル」です)。 b
のサービス要求は、a
の応答に依存します。 b
の応答の後、私は加入者の両方の応答にアクセスする必要があります。私はこのような呼び出しを行うことを計画:RxJavaは、ネットワーク接続要求で以前に観測された結果を取得します
services.a()
.flatMap(a -> services.b(a))
.subscribe(b ->
// Access a and b here
)
をしかし、この方法では、私は私の加入者にb
の結果にアクセスすることができます。 a
のレスポンスをどうやって渡すことができますか?
私の最初の試みは、このようなものを使用することでした:
// Note: Code will not compile... Just to show the concept
services.a()
.flatMap(
a -> Observable.combineLatest(
Observable.just(a)
services.b(a).toObservable()
Bifunction((a, b) -> {return Pair<ResponseA, ResponseB>(a, b)})
)
)
.toSingle()
.subscribe(pair -> {
ResponseA a = pair.first();
ResponseB b = pair.second();
})
をしかし、ユースケースは、少し複雑につれ、コードは醜いモンスターに進化していきます。あなたはresultSelector
でflatMap()
のバリアントを使用することができます