【发布时间】:2015-07-17 14:15:42
【问题描述】:
在 RxJava(或一般的 RX)中,有没有什么方法可以组合 observable,使得结果 observable 等待直到每个 observable 以任何一种方式完成(当它们中的任何一个抛出错误时都不会吓坏)然后完成单个结果包含有关哪个 observable 成功完成以及哪个遇到错误的信息?
如果成功完成会额外返回 observable 的结果,或者失败完成时会返回错误原因(例如 Throwable 实例)?
行为将类似于此 (RSVP.js):
https://github.com/tildeio/rsvp.js/#all-settled-and-hash-settled
我可以选择实现一个类似于 Scala 的 Try 的概念,将此类 observable 发出的值包装到 Try 值中,并使用 http://reactivex.io/documentation/operators/catch.html 处理错误并将它们转换为错误值......但这将是手动工作,因此我想要知道在阅读文档时是否有一些我错过或没有正确理解的预制运算符
编辑:它不需要是单个结果,我会使用 observable 来发出包含在 Try 构造中的所有值 :)
【问题讨论】:
-
你检查
mergeDelayError了吗?这不是您正在寻找的东西,但也许您可以使用它。否则我想你必须自己结合一些运算符来实现它,可能map转换为Try,catch将错误转换为Failure和zip最后。顺便说一句,您也可以使用rx.Notification和materialize,而不是使用Try。
标签: java scala reactive-programming rx-java rsvp.js