如果 RxJava 失败,如何恢复映射列表
How to resume mapping a list if one fails RxJava
给定以下代码,onErrorResumeNext 方法将仅用 "hi" 替换列表中的错误项。我将如何让它继续遍历列表的其余部分?
List<Object> list = new ArrayList<>();
list.add("one");
list.add(new Testo());
list.add("two");
list.add("three");
Observable.fromIterable(list)
.map(item -> item.toString())
.onErrorResumeNext(Observable.just("hi"))
.subscribe(item -> System.out.println(item), onError -> System.out.println("error"));
private static class Testo {
@Override
public String toString() {
throw new NullPointerException();
}
}
您可以添加一个内部反应流,这样当发生错误时外部不会被终止:
Observable.fromIterable(list)
.flatMap((item) -> Observable.just(item)
.map(_item -> _item.toString())
.onErrorResumeNext(Observable.just("hi")))
.subscribe(item -> System.out.println(item), onError -> System.out.println("error"));
给定以下代码,onErrorResumeNext 方法将仅用 "hi" 替换列表中的错误项。我将如何让它继续遍历列表的其余部分?
List<Object> list = new ArrayList<>();
list.add("one");
list.add(new Testo());
list.add("two");
list.add("three");
Observable.fromIterable(list)
.map(item -> item.toString())
.onErrorResumeNext(Observable.just("hi"))
.subscribe(item -> System.out.println(item), onError -> System.out.println("error"));
private static class Testo {
@Override
public String toString() {
throw new NullPointerException();
}
}
您可以添加一个内部反应流,这样当发生错误时外部不会被终止:
Observable.fromIterable(list)
.flatMap((item) -> Observable.just(item)
.map(_item -> _item.toString())
.onErrorResumeNext(Observable.just("hi")))
.subscribe(item -> System.out.println(item), onError -> System.out.println("error"));