繁体   English   中英

如何聚合多个JavaRX Observable

[英]How to aggregate multiple JavaRX Observables

我有一个Observables列表,我想知道他们什么时候完成了。 特别是我想知道它们是否都成功完成或者其中任何一个都有错误。 列表中的所有可观察项应在成功或错误通知执行之前完成。 我不需要有关这些通知中的结果或错误的任何信息。

我尝试了Observable.merge(列表),但它在第一个错误时停止了。

期望的例子

Observable.all(listOfObservables)
    .onSuccess(() -> {}) // only called if all completed successfully
    .onError(() -> {}) // only called after all completed and at least one errored
    .onComplete(() -> {}; // called after all completed regardless of success or error

这似乎是一种标准行为; 像框架这样的其他“异步承诺”支持这一点。 JavaRx是否支持此行为? 实现这一目标的最佳方法是什么?

我认为你需要mergeDelayError 它合并了多个Observable,与merge相同,但是它的JavaDoc说 - 将N Observables扁平化为一个Observable,允许Obse​​rver从所有源Observable接收所有成功发出的项,而不会被来自一个Observable的错误通知中断他们 因此,源Observables的错误排放不会终止产品Observable。 所以:

Observable.mergeDelayError(listOfObservables)
  .subscribe(
    (v) -> {}, // for every successfull item
    (e) -> {}, // after all completed and at least one errored
    () -> {}  // after all completed, won't be called on error though
  );

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM