RxJava2 и Android сложная наблюдаемая цепочка - PullRequest
0 голосов
/ 06 февраля 2019

Я некоторое время работал с Rx Java 2, но недавно столкнулся с ситуацией, которая поставила меня в тупик.У меня есть полусложная цепочка операций, и я хочу передать «объект состояния» по цепочке.

Basic flow for rx operations

Есть 4 операции, во время которых я хочу повторять операции 2 и 3 (поочередно, а не вместе), пока не будут выполнены определенные условия.Я знаю, что могу решить эту проблему, связывая каждую операцию с помощью andThen (), но это ограничивает мою способность передавать объект состояния по цепочке, не выходя за пределы цепочки.

Причина, по которой мне нужен объект состояния, заключается в том, что мне нужно сохранить начальное значение во время первой операции и сравнить его со значением, полученным во время операции 4, чтобы определить, была ли общая процедура успешной.

Есть какие-нибудь подсказки относительно того, какие операторы RxJava2 могут помочь мне в достижении надлежащих условий повторения для операций 2 и 3?Я предпочел бы не вкладывать наблюдаемые, если это возможно.

1 Ответ

0 голосов
/ 06 февраля 2019

Вы можете сохранить свое состояние как AtomicReference<State> и использовать оператор repeatUntil.

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

Вы можете легко связать эти Completables с помощью andThen

...