当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