簡體   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