1

特定の時間遅延の後にユーザの状態をチェックしたいと思います。Rx Android/Java:どのように順次異なるタイプの観測可能な2つを結合する

私が観察可能な2 Observables:

  1. タイマーがあります。特定の遅延後にイベントを発します。

    観察可能なタイマ= Observable.timer((endTime - startTime)、TimeUnit.SECONDS);

  2. Observableこれは、ユーザーの現在のステータスを取得します。

    観察可能ステータス= getCurrentStatusObservable(id);

これらを観測可能に組み合わせて、結果を出力する必要があります。 これを実装するために、以下の方法でzip演算子を使用しました。

return Observable.zip(timer, status, new Func2<Long, CurrentStatus, CurrentStatus>() { 
      @Override 
      public Program call(Long aLong, CurrentStatus status) { 
       return program; 
      } 
     }); 

しかし、問題statusobservabletimer吹く前に実行なっていることです。したがって、zipオペレータは、古いですstatusを返しています。しかしstatusObservabletimerの打撃の後に実行したい。

誤った演算子を使用している場合は教えてください。私はconcatオペレータをチェックしましたが、同タイプのObservableが必要です。

答えて

1

あなたは私はあなたの答えに同意flatMap

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

普通の使用することができます。私はこのためにzip演算子を使用しようとしていた、flatMapを使用して簡単かつ正しいアプローチです。 flatMap以外の演算子を使用して同じ作業を行う方法がありますか? –

関連する問題