【发布时间】:2016-01-09 06:11:42
【问题描述】:
我的目标是从 Service 中获取 A,然后从 A 和 Service 中获取 B。在我完成 B 或发生异常后,该服务也需要关闭。
我想出了以下 API:
Observable<Service> getService();
Observable<Integer> getA(Service service);
Observable<Integer> getB(Integer a, Service service)
我可以在以下情况下使用它:
getService().subscribe(s -> {
getA(s).subscribe(a -> {
getB(a, s).subscribe(b -> {
doSomethingWith(b);
s.close();
}, r -> s.close());
}, r->s.close());
});
嵌套订阅有3个级别,关闭服务的语句出现在所有3个subscribe()中。
有什么办法可以减少订阅号(回调),让代码更容易阅读和理解?
谢谢!
【问题讨论】:
-
使用
flatMap、using并在理想情况下重新设计您的服务,使其具有getA()和getB(a)方法。
标签: system.reactive reactive-programming rx-java observable