【问题标题】:RxJava - Wait for Observable to completeRxJava - 等待 Observable 完成
【发布时间】:2016-09-06 07:39:40
【问题描述】:

我有两个Observable 序列,即Observable1Observable2。它们都在单独的调度程序上执行。

Observable1 从数据库获取数据,而Observable2 从服务器获取相同的数据。

这两个Observablesequences 的结果使用主题发送到Observer

现在如果没有互联网连接,那么Observable2Observable1 可以发布其onNext() 事件之前执行onError()

如何在Observable2 开始发射之前等待Observable1 发射其onNext() 事件?

这里有一些代码:

Observable1 = dataRepo.getItems().doOnNext({ serializedSubject.onNext(items)}).subscribeOn(Schedulers.io());

Observable2 = cloudRepo.getItems().doOnNext({ dataRepo.addAll(items) dataRepo.getItems().subscribe(serializedSubject)}). subscribeOn(Schedulers.io());

Observable.mergeDelayError(Observable1, Observable2) .subscribeOn(Schedulers.io()).subscribe(new Subscriber());

【问题讨论】:

  • 您是否尝试过使用合并运算符。reactivex.io/documentation/operators/merge.html
  • 谢谢@blackpanther。我想我可以使用 mergeDelayError 运算符让它工作。会试试的:)
  • 延迟合并仍然会在 onNext 之前发出 onError。 :( 发布了一些示例代码供参考。

标签: android rx-java rx-android


【解决方案1】:

如果你只是不关心错误代码,在每个 Observable 的末尾添加.onErrorResumeNext(Observable.empty());你只需要普通的merge 操作符。

【讨论】:

  • 感谢 Tassos 的帮助,但我需要在我进入下一步后处理错误。有没有办法捕获像 UnknownHostException 这样的特定异常?我试过 onExceptionResumeNext 但它处理所有异常:(
  • 找到了。可以将函数传递给 OnErrorResumeNext 并检查传递给函数的 throwable 实例的类型。
  • 当然。在stackoverflow.com/questions/39043561/…查看我的回答
猜你喜欢
  • 2015-10-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-29
  • 2018-10-06
  • 2018-08-06
  • 2017-09-20
  • 1970-01-01
相关资源
最近更新 更多