2015-07-17 4 views
1

В RxJava (или RX в целом) есть ли способ объединить наблюдаемые объекты таким образом, чтобы полученные наблюдаемые ожидали, пока все наблюдаемые не будут завершены в любом случае (не волнуется, когда какой-либо из них выдает ошибку), а затем завершается единственным результатом, содержащим информацию о том, какая наблюдаемая завершилась успешно и которая обнаружила ошибку?RxJava Observable продолжает по ошибке и получает статус

Он будет дополнительно возвращать результат наблюдаемого, если он завершен успешно, или ошибка (например, Throwable instance) при завершении сбой?

поведения будет похоже на это (RSVP.js):

https://github.com/tildeio/rsvp.js/#all-settled-and-hash-settled

я мог бы, возможно реализовать концепцию, подобную Try Скалы, значение обруча, излучаемый такими наблюдаемыми в значение попытаться использовать http://reactivex.io/documentation/operators/catch.html для обрабатывать ошибки и преобразовывать их в значения ошибок ... но это было бы ручной работой, и поэтому я хотел знать, есть ли какой-либо заранее подготовленный оператор для этого, который я пропустил или не понял правильно при чтении документации.

EDIT: Это не должно быть ни одного результата, я пойдет с наблюдаемым, что также испускает все значения, заключенные в конструкциях Try :)

+1

Вы проверили 'mergeDelayError'? Это не совсем то, что вы ищете, но, возможно, вы можете использовать его. В противном случае, я думаю, вам нужно будет объединить некоторые операторы для достижения этого, возможно, «map», чтобы преобразовать в 'Try',' catch', чтобы преобразовать ошибки в 'Failure' и' zip' в конце. Btw вместо использования 'Try', вы также можете использовать' rx.Notification' и 'materialize'. –

ответ

1

.materialize() может быть тем, что вы ищете. Он преобразует Observable<T> в Observable<Notification<T>>, где Notification является либо значением, либо ошибкой или завершением.

Смежные вопросы