2017-02-08 1 views
0

で観察:サーバからネストIは、2つの操作有するReactiveX

  1. 負荷項目(アイテムのみ特定filedsを含む)のローカルデータベースから
  2. 負荷項目(DB内の項目が他の filedsを含んでいてもよいです)
  3. 私は、各SIのためにRXを使用する方法を知っているデシベルで1つのアップデートとして

をUI

  • 更新アイテムをアイテムを組み合わせます操作を終了すると、一度それらのすべてを呼び出すと、私は他の内部で観察可能なネストについて考えるだけで、これはコールバック地獄になります。

    これらのジョブを完了するための正しい方法は何ですか?

  • 答えて

    1

    説明によると、サーバーとローカルDBクエリは、両方のデータを結合した後に並行して実行する必要があるため、zip演算子を使用する必要があります。 zipはObservableの両方の値を出力するとサーバーとDBの両方のデータを取得し、zip演算子funcでそれらを結合するとObservableを取得します。組み合わせたデータ。

    結合されたデータ(doOnNext)が放出されるごとに、バックグラウンドで保存操作を開始し、加入者は結合データに従ってUiを更新する。

    Observable<ServerData> getServerData = ...; 
    Observable<LocalDbData> getLocalDbData = ...; 
    
    Observable 
        .zip(getServerData, getLocalDbData, 
         (serverData, localDbData) -> combinedData(serverData, localDbData)) 
        .doOnNext(combinedData -> updateDataInDb()) 
        .subscribe(combinedData -> updateUi(combinedData)); 
    
    関連する問題