В
первой части мы прошлись по основам RxJava. Во
второй части я показал вам потенциал операторов. Но, быть может, всего показанного мною всё ещё недостаточно для того, чтобы убедить вас. В таком случае я покажу вам ещё несколько полезностей RxJava, которые должны стать решающим аргументом в мою пользу.
Обработка ошибок
До настоящего момента мы полностью игнорировали такие методы
Observable
, как
onComplete()
и
onError()
. Данные методы вызываются в момент, когда
Observable
прекращает порождать новые данные — либо потому, что ему нечего больше порождать, либо потому, что произошла ошибка.
Самый первый наш
Subscriber
следил за
onCompleted()
и
onError()
. Давайте сделаем что-нибудь полезное в этих точках:
Observable.just("Hello, world!")
.map(s -> potentialException(s))
.map(s -> anotherPotentialException(s))
.subscribe(new Subscriber<String>() {
@Override
public void onNext(String s) { System.out.println(s); }
@Override
public void onCompleted() { System.out.println("Completed!"); }
@Override
public void onError(Throwable e) { System.out.println("Ouch!"); }
});