Как построить Observable из отдельных этапов вычислений с помощью RxScala / RxJava? - PullRequest
0 голосов
/ 11 ноября 2018

У меня сейчас есть следующий код:

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 перехода между состояниями, на самом деле может случиться так, что я буду проходить больше переходов или меньше. Я хотел бы, чтобы переход от будущего к наблюдаемому подразумевал наименьшее количество изменений из моего текущего «императивного» кода.

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

1 Ответ

0 голосов
/ 13 ноября 2018

Используйте Observable.create и просто переходите в следующее состояние всякий раз, когда:

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();
});
...