Rx Android/Java:如何按顺序组合两个不同类型的可观察对象

Rx Android/Java: How to Sequentially combine two observable of different type

我想在特定时间延迟后检查用户的状态。

我有两个Observables:

  1. Timer Observable:在特定延迟后发出事件。

    可观察计时器 = Observable.timer((endTime - startTime), TimeUnit.SECONDS);

  2. Observable 获取用户的当前状态。

    可观察状态 = 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 observabletimer 打击之前被执行。因此 zip 运算符返回旧的 status。但是我想要 status Observabletimer 打击之后执行。

如果我使用了错误的运算符,请告诉我。我检查了 concat 运算符,但它需要相同类型的 Observable

您可以只使用常规 flatMap

return timer.flatMap(new Func1<Long, Observable<CurrentStatus>() {
    @Override
    public Observable<CurrentStatus> call(Long aLong) {
        return status;
    }
});