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;
}
我是 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;
}