我是rxjava的初学者,我遇到了问题。
我有两个网络电话。
Observable<ClassA> getClassA(){
return networkExecutor.getClassAFromApi();
}
Observable<ClassB> getClassB(){
return networkExecutor.getClassBFromApi();
}
现在我需要这两个以便代码继续进行,所以我对它们进行了压缩。此外,我想将这些值临时保存在私有类范围变量中,例如cA和cB;
getClassA().zipWith(getClassB, (classA, classB) -> {
cA = classA;
cB = classB;
return true;
}
问题是,当我稍后重复同一步骤时,cA和cB是旧值而不是新值。
例如我第一次调用cA和cB的zip方法哈希值是xxx1,xxx2
当我第二次调用相同的方法时,会从具有哈希xxx3和xxx4的网络生成新对象。
当我调用此类getter时,我得到cA xxx1而不是我应该已经得到xxx3。
答案 0 :(得分:0)
您可以在事件之后使用某些do运算符来清除哈希字段,或者在继续执行新请求之前清除它们。 查看prototype。我可能会使用doAfterNext()运算符并根据需要重置字段。
答案 1 :(得分:0)
问题出在架构上,而不是设置全局组件,你应该将它们保存在流中,创建自定义类来保存值,并将它们带入。
onNext(CustomClassObject object){
// object.getClassA;
}