简单介绍一下背景,最近RxJava很火,我也看来学习一下,计划在项目的独立模块中使用它。使用过程中遇到很多问题,在这里记录分享一下。可能有使用不当的地方,大家多多包涵。对于RxJava的基本概念和功能原理就不做介绍了。

变换操作时,使用的方法是抛出异常的,如何处理:

开始使用map操作,发现处理异常时,不能在订阅(Subscriber)的时候观察到onError。

代码块

    public String changeFun(int i) throws Exception {
if (i == 100) {
throw new Exception("i == 100");
} else {
return "OK";
}
} public void test() {
Observable.just(100).map((Integer integer) -> {
try {
return changeFun(integer);
} catch (Exception e) {
e.printStackTrace();
}
return "";
}).subscribe(new Subscriber<String>() {
@Override
public void onCompleted() { } @Override
public void onError(Throwable e) { } @Override
public void onNext(String s) { }
});
}

针对上面问题修改为操作符flatMap进行实现。

代码块

        public String changeFun(int i) throws Exception {
if (i == 100) {
throw new Exception("i == 100");
} else {
return "OK";
}
} Observable.just(100).flatMap(integer -> Observable.create(subscriber -> {
try {
subscriber.onNext(changeFun(integer));
subscriber.onCompleted();
} catch (Exception e) {
subscriber.onError(e);
}
})).subscribe(new Subscriber<String>() {
@Override
public void onCompleted() {
Log.d(TAG, "onCompleted"); } @Override
public void onError(Throwable e) {
Log.d(TAG, "onError:" + e.toString());
} @Override
public void onNext(String s) {
Log.d(TAG, "onNext:" + s);
}
});

flatMapmap在使用过程中的区别在于 flatMap返回Observable,而map返回Object。工作原理的差别自行查阅一下吧。

最新文章

  1. android小技巧(一)
  2. 伪Acmer的推理(dfs/bfs)
  3. 微信、qq时间格式模板
  4. 传说中的WCF(7):“单向”&amp;“双向”
  5. HDU2028 Lowest Common Multiple Plus
  6. Windows下Android SDK Manage下载速度缓慢的解决方法
  7. 原生js在IE7下 向dom添加节点的一个bug, (本例为添加hidden input)
  8. Android发展简单介绍
  9. PHPCMS V9表单向导调用及分页
  10. [用CDQ分治解决区间加&amp;区间求和]【习作】
  11. MySQL递归查询_函数语法检查_GROUP_CONCAT组合结果集的使用
  12. docker 中安装 redis
  13. How to Configure Email Notification in Jenkins
  14. 【小y设计】二维码条形码打印编辑器
  15. HDU 2612 - Find a way - [BFS]
  16. zookeeper各种报错、原因及解决方法汇总(持续更新)
  17. 前端页面loading效果(CSS实现)
  18. C# byte[]保存成文件
  19. 层叠样式表css的优先级
  20. 基于Bootstrap的Asp.net Mvc 分页的实现

热门文章

  1. test1.xlsx
  2. Django缓存系统设置
  3. 如何方便的保存WinForm窗体控件的位置大小等等配置信息
  4. lanmp之二 (奇葩问题)
  5. .net MVC 简单图片上传
  6. C# winform 跨线程更改窗体控件的属性
  7. mysql高并发和表类型
  8. WPF 画心2.0版之元旦快乐
  9. MFC操作注册表
  10. 51nod1135(求最小原根)