首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >RxJava2多线程或出了问题

RxJava2多线程或出了问题
EN

Stack Overflow用户
提问于 2017-09-07 21:08:26
回答 2查看 62关注 0票数 1

我是rxjava的初学者,我面临着一个问题。

我有两个网络电话。

代码语言:javascript
复制
Observable<ClassA> getClassA(){
  return networkExecutor.getClassAFromApi();
}
Observable<ClassB> getClassB(){
  return networkExecutor.getClassBFromApi();
}

现在,为了继续代码,我需要这两种方法,所以我对它们进行了压缩。另外,我希望将这些值临时保存在私有类作用域变量中,比如cA和cB;

代码语言:javascript
复制
 getClassA().zipWith(getClassB, (classA, classB) -> {
  cA = classA;
  cB = classB;
  return true;
}

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

例如,我第一次调用cA和cB的zip方法散列是xxx1,xxx2

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

当我调用这个类getter时,我得到了cA xxx1,而我应该已经得到了xxx3。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-09-12 07:30:43

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

票数 0
EN

Stack Overflow用户

发布于 2017-09-11 14:26:58

您可以在事件发生后使用一些do操作符来清除散列字段,或者在继续处理新请求之前清除它们。查一下做操作者。我可能会使用doAfterNext()操作符,并在必要时重置字段。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46105119

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档