언제 RxJava 에서 map
vs 를 사용 합니까?flatMap
예를 들어 JSON이 포함 된 파일을 JSON이 포함 된 문자열에 매핑하려고합니다.
를 사용 map
하여 Exception
어떻게 든 처리해야합니다 . 그러나 어떻게? :
Observable.from(jsonFile).map(new Func1<File, String>() {
@Override public String call(File file) {
try {
return new Gson().toJson(new FileReader(file), Object.class);
} catch (FileNotFoundException e) {
// So Exception. What to do ?
}
return null; // Not good :(
}
});
를 사용하면 flatMap
훨씬 더 장황하지만 문제를 Observables
다른 것으로 선택하고 오류를 처리하면 다시 시도 할 수 있습니다.
Observable.from(jsonFile).flatMap(new Func1<File, Observable<String>>() {
@Override public Observable<String> call(final File file) {
return Observable.create(new Observable.OnSubscribe<String>() {
@Override public void call(Subscriber<? super String> subscriber) {
try {
String json = new Gson().toJson(new FileReader(file), Object.class);
subscriber.onNext(json);
subscriber.onCompleted();
} catch (FileNotFoundException e) {
subscriber.onError(e);
}
}
});
}
});
나는의 단순함을 좋아 map
하지만 flatmap
(자세한 것은 아닙니다)의 오류 처리 . 나는 떠 다니는 것에 대한 모범 사례를 보지 못했고 이것이 실제로 어떻게 사용되고 있는지 궁금합니다.
subscriber.onError()
등을 호출하지 않습니다 . 내가 본 모든 예제는 그런 식으로 오류를 라우팅했습니다. 중요하지 않습니까?