onErrorResumeNext 的 rxjava 行为
rxjava behaviour of onErrorResumeNext
我无法让 Observer.onErrorResumeNext 表现得像我期望的那样。
Subscriber orchestratorObserver = new Subscriber<Integer>() {
@Override
public void onCompleted() {
System.out.println("orchestratorObserver."+"onCompleted()");
}
@Override
public void onError(Throwable e) {
System.out.println("orchestratorObserver."+"onError()"+e.getMessage());
}
@Override
public void onNext(Integer i) {
System.out.println("orchestratorObserver."+"onNext() : "+i);
}
};
@Test
public void rxTest() {
Observable.range(0,5)
.doOnNext(new Action1<Integer>() {
@Override
public void call(Integer integer) {
throw new RuntimeException("chain error!!");
}
})
.onErrorResumeNext(Observable.just(-1))
.subscribe(orchestratorObserver);
}
@Test
public void rxTest1() {
final Observable<Integer> errorTrainObservable = Observable.defer(
new Func0<Observable<Integer>>() {
@Override
public Observable<Integer> call() {
return Observable.error(new RuntimeException("source error"));
}
});
errorTrainObservable.onErrorResumeNext(Observable.just(-1));
errorTrainObservable.subscribe(orchestratorObserver);
}
所以 rxTest() 输出:
orchestratorObserver.onNext() : -1
orchestratorObserver.onCompleted()
而 rxTest1() 输出:
orchestratorObserver.onError()source error
我希望 rxTest1 输出与 rxTest 相同的 onNext 事件 - 我该怎么做?即我想吞下错误并发出默认值 onNext 事件。
这似乎很奇怪,如果错误是在源头上,它会以一种方式表现 - 但如果错误是链,它会以另一种方式表现?如果你能向我解释一下,加分:)
这些行:
errorTrainObservable.onErrorResumeNext(Observable.just(-1));
errorTrainObservable.subscribe(orchestratorObserver);
您创建了一个带有错误处理程序的 Observable
,然后将其丢弃,然后您订阅了没有错误处理程序的可观察对象。
我无法让 Observer.onErrorResumeNext 表现得像我期望的那样。
Subscriber orchestratorObserver = new Subscriber<Integer>() {
@Override
public void onCompleted() {
System.out.println("orchestratorObserver."+"onCompleted()");
}
@Override
public void onError(Throwable e) {
System.out.println("orchestratorObserver."+"onError()"+e.getMessage());
}
@Override
public void onNext(Integer i) {
System.out.println("orchestratorObserver."+"onNext() : "+i);
}
};
@Test
public void rxTest() {
Observable.range(0,5)
.doOnNext(new Action1<Integer>() {
@Override
public void call(Integer integer) {
throw new RuntimeException("chain error!!");
}
})
.onErrorResumeNext(Observable.just(-1))
.subscribe(orchestratorObserver);
}
@Test
public void rxTest1() {
final Observable<Integer> errorTrainObservable = Observable.defer(
new Func0<Observable<Integer>>() {
@Override
public Observable<Integer> call() {
return Observable.error(new RuntimeException("source error"));
}
});
errorTrainObservable.onErrorResumeNext(Observable.just(-1));
errorTrainObservable.subscribe(orchestratorObserver);
}
所以 rxTest() 输出:
orchestratorObserver.onNext() : -1
orchestratorObserver.onCompleted()
而 rxTest1() 输出:
orchestratorObserver.onError()source error
我希望 rxTest1 输出与 rxTest 相同的 onNext 事件 - 我该怎么做?即我想吞下错误并发出默认值 onNext 事件。
这似乎很奇怪,如果错误是在源头上,它会以一种方式表现 - 但如果错误是链,它会以另一种方式表现?如果你能向我解释一下,加分:)
这些行:
errorTrainObservable.onErrorResumeNext(Observable.just(-1));
errorTrainObservable.subscribe(orchestratorObserver);
您创建了一个带有错误处理程序的 Observable
,然后将其丢弃,然后您订阅了没有错误处理程序的可观察对象。