Functional programming Rx Android/Java:如何顺序组合两个不同类型的可观察对象
我想在特定的时间延迟后检查用户的状态 我有两个Functional programming Rx Android/Java:如何顺序组合两个不同类型的可观察对象,functional-programming,rx-java,reactive-programming,rx-android,Functional Programming,Rx Java,Reactive Programming,Rx Android,我想在特定的时间延迟后检查用户的状态 我有两个可观察对象: 可观察计时器:在特定延迟后发出事件 可观测计时器=可观测计时器((endTime-startTime),时间单位为秒 可观察的,获取用户的当前状态 可观察状态=getCurrentStatusObservable(id) 我必须按顺序组合这些可观测数据,然后结果应该会发出。 为了实现这一点,我使用了以下方法的zip操作符 return Observable.zip(timer, status, new Func2<Long, Cu
可观察对象:
可观察的
,获取用户的当前状态
可观察状态=getCurrentStatusObservable(id)return Observable.zip(timer, status, new Func2<Long, CurrentStatus, CurrentStatus>() {
@Override
public Program call(Long aLong, CurrentStatus status) {
return program;
}
});
返回Observable.zip(计时器、状态、新Func2(){
@凌驾
公共程序调用(长期、当前状态){
返回程序;
}
});
但问题是状态
可观察
在计时器
启动之前执行。因此,zip
操作员正在返回旧的状态。但我希望状态
可观察
在定时器
启动后执行
如果我使用了错误的运算符,请告诉我。我选中了concat
操作符,但它需要相同类型的可观察的
。您可以只使用一个常规的平面图
return timer.flatMap(new Func1<Long, Observable<CurrentStatus>() {
@Override
public Observable<CurrentStatus> call(Long aLong) {
return status;
}
});
return timer.flatMap(new func1)我同意你的答案。我试图使用zip运算符来实现这一点,使用flatMap是简单而正确的方法。是否有一种方法可以通过使用除flatMap以外的运算符来完成相同的工作。