gpt4 book ai didi

android - RxJava/RxAndroid : continue range loop after error

转载 作者:行者123 更新时间:2023-11-30 00:21:47 28 4
gpt4 key购买 nike

这是我的示例代码和结果:

Observable.range(0, 10)
.flatMap(actNumber -> {
if (actNumber == 3) {
return Observable.error(new Throwable("This is an error"));
}
return Observable.just(actNumber);
})
.onErrorReturnItem(-1)
.subscribe(new Consumer<Integer>() {
@Override
public void accept(Integer number) throws Exception {
Logs.d("number -> " + number);
}
}, new Consumer<Throwable>() {
@Override
public void accept(Throwable throwable) throws Exception {
Log.d("RX", "Error: " + throwable.toString());
}
});

0, 1, 2, -1

可以吗,但是我该如何设置它以获得这个结果?

0, 1, 2, -1, 4, 5, 6, 7, 8, 9

谢谢,罗伯特

最佳答案

根据 Observable contract ,一旦 Observable 发出 onErroronCompleted,Observable 信号将不再发射任何元素。您遇到的问题是,如果数字是 3,您将返回 Observable.error(),这会向您的 发出一个 onError code>Consumer 然后终止信号。

根据契约(Contract),您不能在错误后继续发送信号。然而,您可以做的是捕获错误并从错误中恢复,并开始返回一个新的 Observable 信号。运算符(operator)的文档可以 be found here .

举个例子

Observable
.error(new Throwable("error"))
.catchErrorResumeNext(Observable.range(3, 10))

(注意:我没有测试这段代码,但它应该指向你的权利

关于android - RxJava/RxAndroid : continue range loop after error,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46161171/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com