Как построить Observable из отдельных шагов вычислений с помощью RxScala / RxJava?

В настоящее время у меня есть следующий код:

def method(): Future[State] = Future {
  // some processing
  State.Completed
}

Но теперь я заметил, что на самом деле хочу вместо этого «опубликовать» набор промежуточных состояний:

def method(): Observable[State] = ? {
  // some processing
  publish State.State1
  // some processing
  publish State.State2
  // some processing
  publish State.Completed
}

Есть ли простой способ добиться этого? Хотя я описал это как 3 перехода между состояниями, на самом деле может случиться так, что я буду проходить больше или меньше переходов. Я бы хотел, чтобы переход с Future на Observable подразумевал наименьшее количество изменений в моем текущем «императивном» коде.

Кроме того, я бы хотел, чтобы эти «события» публиковались в реальном времени, а не только при возврате из метода.


person devoured elysium    schedule 11.11.2018    source источник


Ответы (1)


Используйте _1 _ и просто нажимайте следующее состояние всякий раз, когда:

Observable<State> stateSource = Observable.create(emitter -> {
     // some processing
     emitter.onNext(State.State1);

     // some processing
     emitter.onNext(State.State2);

     // some processing
     emitter.onNext(State.Completed);

     // no further state changes
     emitter.onComplete();
});
person akarnokd    schedule 13.11.2018