0

rxjavaでコーディングした後、全く違った方法で考えることができます。コレクションにデータを保存する操作が必要なときはどうすればよいのですか?私は、すべてのリクエストが完了した後、後で取り組むことができます。 例えば、私はいくつかのAPIにいくつかのput呼び出しを送信し、後でいくつかの "間違い訂正"を行うためにマップ内のすべての失敗した呼び出し応答を保存したいと言うことができます。 これまで、上から下に向かって全体の流れを記述してこの要求を行う必要があるように見えます - >間違い - >正しいパイプは操作のパイプなので、別の時に起こった2つの操作に分けたいです。 私はおそらくrxjavaの重要な概念がないと思います。RxJavaとコレクションにデータを保存する

結論どのようにして後でアドレス指定するためにコレクションにデータをキャッシュするのですか?要求が失敗したときにデータをconcurrentHashMapに配置するだけですか?ご使用のケースのために、おそらく二 - あなたはRXチェーンへの副作用を追加したい場合は、事前

答えて

0

おかげで一般的に、あなたはdoOnNextdoOnErrorを使用したいと思います。あなたは、Action1の実装の中で自分のコレクションに追加することができます。

0

ここにいくつかの質問があります。受信から

  • 変更状態は確かに副作用と呼ばれ、通常は.doOn ...()メソッドを介して行われます。
  • 1つのメソッドで成功したイベントとエラーのあるイベントの両方を処理するには、.materialize()オペレータを適用します。
  • コンカレントHashMapに状態を保持することは可能ですが、更新されたという通知は受け取りません。
  • したがって、.scan()によって更新されたオブジェクトに状態を保持することになります。
  • すべての応答を再購読せずに1つのストリームにまとめることは、.switchLatest()/。switchOnNext()演算子で行うことができます。ここでのRxSwiftの例を参照 - https://github.com/maxvol/RaspSwift/blob/master/RaspSwift/RaspAggregator.swift(RxSwiftの '.switchLatest()'はRxJavaの '.switchOnNext()'と同じです)
関連する問題