4

AnObject インスタンスの配列があり、次の一連のアクションを実行する必要があるとします。

  • 個別の呼び出しでオブジェクトをバックエンドに送信する
  • ステップ1が終了したら、この配列をDBにバッチで保存します
  • ステップ 2 が終了したら、各アイテムの追加処理を行います

そして、これらすべてのステップが実行された後 (またはエラーが発生した後) にのみシグナルを受信したいと考えています。RxSwiftを介してこれを達成する正しい方法は何ですか?それは実際に可能ですか?

以下のプロトタイプ関数を見つけてください。残念ながら、連鎖のための有効なコード サンプルが思いつかなかったので、デモするものは何もありません。

func makeAPIRequest(object: AnObject) -> Observable<Void> {
    ...
}

func storeData(data: [AnObject]) -> Observable<Void> {
    ...
}

func additionalProcessing(object: AnObject) -> Observable<Void> { 
    ...
} 

func submitData()
{
   let data: [AnObject] = ...;

   let apiOperations = data.map{ makeAPIRequest($0) };
   let storageOperation = storeData(data);
   let processingOperations = data.map{ additionalProcessing($0) };

   ... // some code to chain steps 1-3
   .subscribe { (event) -> Void in
       // should be called when operations from step 3 finished  
   }.addDisposableTo(disposeBag);
}
4

1 に答える 1