2017-09-07 67 views
1

在rxjava我是一個初學者,我面臨一個問題。RxJava2多線程或出錯

我有兩個網絡電話。

Observable<ClassA> getClassA(){ 
    return networkExecutor.getClassAFromApi(); 
} 
Observable<ClassB> getClassB(){ 
    return networkExecutor.getClassBFromApi(); 
} 

現在我需要這兩個以便代碼來進行,所以我做一個zip他們。另外我想將這些值臨時保存在私有的類作用域變量中,比如說cA和cB;

getClassA().zipWith(getClassB, (classA, classB) -> { 
    cA = classA; 
    cB = classB; 
    return true; 
} 

的問題是,當後來我重複相同的步驟,CA和CB是舊值,而不是新的。

例如第一次我稱之爲CA和CB的拉鍊方法散列XXX1,XXX2

當我調用相同的方法第二次,從網絡生成與散列XXX3和XXX4新對象。

當我調用這個類getter我得到cA xxx1,而我應該已經得到xxx3。

回答

0

的問題是在建築,而不是globaly設置的組件,你應該讓他們在流中創建自定義的類來保存價值,並採取他們進來 onNext(CustomClassObject object){ // object.getClassA; }

0

您可以在事件之後使用某些do操作符來清除散列字段,或在繼續處理新請求之前將其清除。 查找Do operators。我可能會使用doAfterNext()運算符並根據需要重置字段。