我有一个List<Observable<?>>
我希望得到其中任何一个发出的第一个项目(顺序运行)或者从最后一个observable返回错误,如果所有返回错误或自定义错误,如果所有都是空的(我可以做)与.switchIfEmpty(Observable.error(RuntimeException())))
。
目前,我有这样的事情:
Observable.fromIterable(listOfObservables)
.take(1)
.switchIfEmpty(Observable.error(RuntimeException()))
此代码只处理获取第一个发出的值并在所有observable都为空但不处理错误情况时返回错误。我有什么想法可以解决这个问题?
答案 0 :(得分:0)
此代码应该按您的要求执行
Observable
.fromIterable(listOfObservables)
.concatMapDelayError(i -> i)
.take(1)
.switchIfEmpty(Observable.error(new RuntimeException()))
concatMapDelayError
将按照请求顺序处理observable并将错误延迟到最后,因此如果每个observable都是错误,您将获得CompositeException
聚合所有异常。