私はいくつかの複雑なデータでアンドロイドのfirebaseを使用しています。私は参照を保存する必要があり、私は私のzip操作、または私はRX全体を処理している方法で問題を取得しています。stream1を2回購読する.zip(stream1、stream2、BiFun)を避けるにはどうすればよいですか?
B
についての情報を含む新しいA object
を作成し、についての情報を持つようにB object
を更新したいとします。 firebase操作が両方成功しているとき、私はlogcatを経由する場合はSingle<A>
val singleA = firebaseCall(A("ABC", bKey))
val singleB = singleA.flatMap{ a -> firebaseCall(B(aKey)) }
return Single.zip(singleA, singleB, BiFunction { a, b -> a })
私はSingleA
が二倍に加入してもらうことを見ることができ戻り、firebase 2回プッシュします。私はこれを避けたい!
したがって、BがAに依存している場合は、AとBでどのようにジップ関数を使用できますか。 Aは2回実行されていませんか?
なぜあなたはそれらを圧縮する必要がありますか? Aからの放出はフラットになり、B – elmorabea
に登録することができます。メソッドシグネチャは 'Single 'を返す必要があります。そのため、 – Yokich
二重サブスクリプションを得る理由は、どちらの場合も同じです.firebaseCall(A "ABC"、bKey))、それからあなた自身でzipしますがflatMappedです。戻り値の型だけをマップする場合は、マップ演算子 – elmorabea