我有5个Observable被链接的s flatMap.如果前四个Observables产生一个Exception我想传播不同类型Exception的第五个.
它是如何实现的?
谢谢.
PS我已经提出了这个尚未经过测试的解决方案:
flatMap(
// onNext
new Func1<BoolResponse, Observable<?>>() {
@Override
public Observable<?> call(BoolResponse boolResponse) {
return request;
}
},
// onError
new Func1<Throwable, Observable<?>>() {
@Override
public Observable<?> call(Throwable throwable) {
return Observable.error(new SomethingWentWrong());
}
},
// onCompleted
new Func0<Observable<?>>() {
@Override
public Observable<?> call() {
return request;
}
});
Run Code Online (Sandbox Code Playgroud)
你认为没关系吗?
Mig*_*gne 30
您正在寻找的是什么onErrorResumeNext,它将允许您捕获Throwable从源发出的任何内容,并允许您使用新的Observable恢复或另一个Observable将发出不同的Observable Throwable.
...
.flatMap(...)
.flatMap(...)
.onErrorResumeNext(new Func1<Throwable, Observable<?>>() {
@Override
public Observable<?> call(Throwable throwable) {
// Here simply return an Observable which will emit the Throwable of your liking
return Observable.error(new Throwable(...));
}
})
.flatMap(...);
Run Code Online (Sandbox Code Playgroud)
请记住,这flatMap是一个处理您的数据流的运算符,但它不允许您onError在代码示例中处理has.您可以在订阅流Observer的onError回调中处理错误.
| 归档时间: |
|
| 查看次数: |
11690 次 |
| 最近记录: |