Wann benutzt du map vs flatMap in RxJava?

Wann nutzen Sie die Karte vs flatMap in RxJava?

Zum Beispiel sagen, wir wollen die map-Dateien mit JSON Strings, die die JSON--

Map, mit der wir umgehen müssen die Ausnahme irgendwie. Aber wie?:

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 :(
    }
});

Mit flatMap, es ist viel Ausführlicher, aber wir können vorwärts, das problem der Kette von Observablen und den Fehler behandeln, wenn wir entscheiden, woanders und auch wiederholen:

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);
                }
            }
        });
    }
});

Ich mag die Einfachheit der Karte, aber die Fehlerbehandlung von flatmap (nicht die Ausführlichkeit). Ich habe nicht gesehen, alle best practices auf diesem Umlauf und ich bin gespannt, wie dies in der Praxis genutzt.

InformationsquelleAutor der Frage Christopher Perry | 2014-04-03

Schreibe einen Kommentar