如何使用RxScala / RxJava从各个计算步骤构建一个Observable?

时间:2018-11-11 19:24:06

标签: rx-java rx-scala

我目前有以下代码:

constraint fk_ingresos_curso 
    foreign key(ciccod, curcod, cursec) references factIngresos(ciccod, curcod, cursec)

但是现在我注意到我实际上想改为“发布”一组中间状态:

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

有没有简单的方法可以做到这一点?尽管我将其描述为3个状态转换,但实际上可能发生的情况是我可能经历更多或更少的转换。我希望从Future到Observable的更改意味着与我当前的“命令式”代码相比更改最少。

此外,我希望这些“事件”能够实时发布,而不仅仅是在从方法返回时发布。

1 个答案:

答案 0 :(得分:1)

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