我目前有以下代码:
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的更改意味着与我当前的“命令式”代码相比更改最少。
此外,我希望这些“事件”能够实时发布,而不仅仅是在从方法返回时发布。
答案 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();
});