RxJava2 多线程或出现问题

RxJava2 multithreading or something goes wrong

我是 rxjava 的初学者,我遇到了一个问题。

我有两个网络电话。

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

现在我需要这两个文件才能继续执行代码,所以我对它们进行了压缩。我还想将这些值临时保存在私有 Class 范围变量中,比如 cA 和 cB;

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

问题是,当我稍后重复相同的步骤时,cA 和 cB 是旧值而不是新值。

例如,我第一次调用 zip 方法时,cA 和 cB 的哈希值是 xxx1、xxx2

当我第二次调用相同的方法时,从网络生成了散列为 xxx3 和 xxx4 的新对象。

当我调用它时 class getter 我得到的是 cA xxx1 而不是我应该已经得到 xxx3。

您可以在事件之后使用一些 do 运算符来清除哈希字段,或者在继续新请求之前清除它们。 查找 Do operators。我可能会使用 doAfterNext() 运算符并根据需要重置字段。

问题出在体系结构上,而不是全局设置组件,您应该将它们保留在创建自定义 class 的流中以保存值,并接收它们。 onNext(CustomClassObject object){ // object.getClassA; }