我想在特定时间延迟后检查用户的状态。
我有两个Observables:
Timer Observable:在特定延迟后发出事件。
Observable timer = Observable.timer((endTime - startTime),TimeUnit.SECONDS);
Observable
获取用户的当前状态。
Observable status = getCurrentStatusObservable(id);
我必须按顺序组合这些observable然后结果应该发出。 为了实现这一点,我使用了zip操作符和以下方法。
return Observable.zip(timer, status, new Func2<Long, CurrentStatus, CurrentStatus>() {
@Override
public Program call(Long aLong, CurrentStatus status) {
return program;
}
});
但问题是status
observable
在timer
打击之前被执行了。因此zip
运算符返回status
,这是旧的。但我希望在status
打击后执行Observable
timer
。
如果我使用错误的操作员,请告诉我。我检查了concat
运算符,但它需要Observable
相同的类型。
答案 0 :(得分:1)
您只能使用常规flatMap
return timer.flatMap(new Func1<Long, Observable<CurrentStatus>() {
@Override
public Observable<CurrentStatus> call(Long aLong) {
return status;
}
});