当stream2基于stream1时,如何避免.zip(stream1,stream2,BiFun)两次订阅stream1?

我在android中使用firebase和一些复杂的数据。我需要保存引用,并且遇到了zip操作的问题,或者我处理RX的方式。当stream2基于stream1时,如何避免.zip(stream1,stream2,BiFun)两次订阅stream1?

我想创建一个新的A object关于某种B信息,并更新我的B object有信息关于创建A。当火力业务均出现了成功,我将返回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获得认购到两次,两次推到火力点。我想避免这个!

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

回答:

你并不真的需要zip为此,你可以简单的地图a回:

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

return singleA.flatMap{ a -> firebaseCall(B(aKey)).map { a } }

以上是 当stream2基于stream1时,如何避免.zip(stream1,stream2,BiFun)两次订阅stream1? 的全部内容, 来源链接: utcz.com/qa/265369.html

回到顶部