2017-09-07 36 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()运算符并根据需要重置字段。