0
Observableを再購読してエラーを取得できますか?エラーを受け取り、再投稿
Observable<T> retry()
メソッドはobservableを再サブスクライブしますが、エラーが発生します。 .retry()
がエラーを消費するため
final PublishSubject<Integer> observable = PublishSubject.create();
observable
.flatMap(new Func1<Integer, Observable<Integer>>() {
@Override
public Observable<Integer> call(final Integer integer) {
if (integer % 2 == 0) {
return Observable.just(integer);
} else {
return Observable.error(new Exception("int: " + integer));
}
}
})
.retry()
.subscribe(new Action1<Integer>() {
@Override
public void call(final Integer integer) {
Timber.i("integer: %d", integer);
}
},
new Action1<Throwable>() {
@Override
public void call(final Throwable throwable) {
Timber.e(throwable, "throwable");
}
},
new Action0() {
@Override
public void call() {
Timber.w("onCompleted");
}
});
Observable
.range(0, 10)
.delay(2, TimeUnit.MILLISECONDS)
.subscribe(new Action1<Integer>() {
@Override
public void call(final Integer integer) {
observable.onNext(integer);
}
},
new Action1<Throwable>() {
@Override
public void call(final Throwable throwable) {
observable.onError(throwable);
}
},
new Action0() {
@Override
public void call() {
observable.onCompleted();
}
});
observable
のonError
一部が呼び出されることはありません。