我是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。
发布于 2017-09-12 07:30:43
问题是在体系结构中,而不是全局设置组件,您应该将它们保存在流中--创建自定义类来保存值,并接受它们。onNext(CustomClassObject object){ // object.getClassA; }
发布于 2017-09-11 14:26:58
您可以在事件发生后使用一些do操作符来清除散列字段,或者在继续处理新请求之前清除它们。查一下做操作者。我可能会使用doAfterNext()操作符,并在必要时重置字段。
https://stackoverflow.com/questions/46105119
复制相似问题