我一直在使用Rx Java 2,但是最近遇到了让我感到困惑的情况。我有一个半复杂的操作链,希望将“状态对象”传递给链下。
有4个操作,在此过程中,我希望重复操作2和3(从本质上讲,不是一起),直到满足特定条件为止。我知道我可以通过使用andThen()链接每个操作来解决此问题,但是这限制了我将状态对象传递到链中而不会到达链外的能力。
我需要一个状态对象的原因是,我需要在第一次操作期间保存一个初始值,并将其与操作4期间接收到的值进行比较,以确定整个过程是否成功。
关于什么RxJava2运算符可以帮助我达到运算2和3的适当重复条件的任何线索?如果可能,我宁愿不要嵌套可观察对象。
答案 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