RxJava2和Android复杂的可观察链

时间:2019-02-06 17:25:25

标签: android kotlin rx-java2

我一直在使用Rx Java 2,但是最近遇到了让我感到困惑的情况。我有一个半复杂的操作链,希望将“状态对象”传递给链下。

Basic flow for rx operations

有4个操作,在此过程中,我希望重复操作2和3(从本质上讲,不是一起),直到满足特定条件为止。我知道我可以通过使用andThen()链接每个操作来解决此问题,但是这限制了我将状态对象传递到链中而不会到达链外的能力。

我需要一个状态对象的原因是,我需要在第一次操作期间保存一个初始值,并将其与操作4期间接收到的值进行比较,以确定整个过程是否成功。

关于什么RxJava2运算符可以帮助我达到运算2和3的适当重复条件的任何线索?如果可能,我宁愿不要嵌套可观察对象。

1 个答案:

答案 0 :(得分:1)

您可以将状态保持为AtomicReference<State>,并使用repeatUntil运算符。

 AtomicReference<State> state = new AtomicReference<>();
 Completable operation = Completable.create() // do something and modify state
        .repeatUntil(() -> state.get() == SATISFYING_CONDITION);

您可以轻松地用andThen链接这些Completables

相关问题