栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

什么时候在RxJava中使用map vs flatMap?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

什么时候在RxJava中使用map vs flatMap?

map
将一个事件转换为另一个事件。
flatMap
将一个事件转换为零个或多个事件。(摘自IntroToRx)

当您想将json转换为对象时,使用map应该就足够了。

处理FileNotFoundException是另一个问题(使用地图或平面地图无法解决此问题)。

要解决您的Exception问题,只需将其与Non Checked异常一起抛出:RX将为您调用onError处理程序。

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) { // this exception is a part of rx-java throw OnErrorThrowable.addValueAsLastCause(e, file);        }    }});

与flatmap完全相同的版本:

Observable.from(jsonFile).flatMap(new Func1<File, Observable<String>>() {    @Override public Observable<String> call(File file) {        try { return Observable.just(new Gson().toJson(new FileReader(file), Object.class));        } catch (FileNotFoundException e) { // this static method is a part of rx-java. It will return an exception which is associated to the value. throw OnErrorThrowable.addValueAsLastCause(e, file); // alternatively, you can return Obersable.empty(); instead of throwing exception        }    }});

您也可以在flatMap版本中返回一个新的Observable,这只是一个错误。

Observable.from(jsonFile).flatMap(new Func1<File, Observable<String>>() {    @Override public Observable<String> call(File file) {        try { return Observable.just(new Gson().toJson(new FileReader(file), Object.class));        } catch (FileNotFoundException e) { return Observable.error(OnErrorThrowable.addValueAsLastCause(e, file));        }    }});


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/437378.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号