【发布时间】:2017-01-09 10:19:44
【问题描述】:
我有很多 Observable 方法。我想在之前的完成后运行下一个。
A 类
public Observable<String> method1(){
// complex stuff (10 sec)
}
public Observable<String> method2(){
// another complex stuff (10 sec)
}
B 类
foo.method1().subscribe(...);
foo.method2().subscribe(...);
foo.method1().subscribe(...);
foo.method1().subscribe(...);
我想一个接一个地运行它...最难的一个:我无法更改B类。我必须改变A类来实现我的目标。有什么想法吗?
我可以使用flatMat(...) 或concatMap(...) 在B 类 中做到这一点,但我无法更改B 类
【问题讨论】:
-
"我想在之前的完成后运行下一个。"这是什么意思?
-
也许我在这里弄错了,但是您的要求不是“翻译”成某种与整个 RxJava Observable 想法相矛盾的东西吗?当您依赖正在按顺序完成的事情时,异步/乱序做事有什么意义?
-
@GhostCat No.
method1()和method2()通过按钮单击调用。此外,这些方法正在编辑相同的数据。如果method1()进行特定操作(数据库已更改),method2()可以做不同的事情 -
虽然上下文对这个要求不是很清楚,但创建新方法以首选顺序执行您想要的操作并通过method1、method2等调用它们不是很简单吗?我无法理解是否通过单击按钮调用方法 1 和方法 2,当有人单击按钮 2 时,我们如何以及为什么要执行方法 1,然后执行方法 2
-
例如。 method1() -> 从服务器获取一页信息 - 插入数据库。 method2() -> 在屏幕上显示所有信息。如果我们一个一个地做:getFirstPage -> showThisPage -> getSecPage -> getThirdPage。如您所见,如果用户第三次点击第一个按钮,那么我将第三次要求第一页。
标签: java android queue rx-java