0

我在 android 中使用带有一些复杂数据的 firebase。我需要保存参考资料,但我的 zip 操作或我处理 RX 的整体方式遇到了问题。

我想创建一个新A object的信息B,并更新我B object的信息以获取有关创建的信息A。当 firebase 操作都成功后,我将返回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 })

通过 logcat 时,我可以看到它SingleA被订阅了两次,并且两次推送到 firebase。我想避免这种情况!

那么,当 B 依赖于 A 时,如何在 A 和 B 上使用 zip 函数?并且没有 A 被执行两次?

4

1 回答 1

1

你真的不需要zip这个,因为你可以简单地映射a回来:

val singleA = firebaseCall(A("ABC", bKey))

return singleA.flatMap{ a -> firebaseCall(B(aKey)).map { a } }
于 2017-12-27T14:01:21.437 回答