我在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被執行兩次?
爲什麼你需要壓縮它們?從A發出的任何輻射都是平面圖,你可以訂閱B – elmorabea
方法簽名應該返回'Single ',這就是爲什麼 – Yokich
你會得到雙重訂閱,因爲你在兩種情況下的排放源是相同的,這就是firebaseCall(A 「ABC」,bKey)),然後你用自己壓縮它,但是如果你想只映射返回類型,那麼只需使用map operator – elmorabea