私は共通のメカニックがいることがわかりました。それを達成するためのより良い方法があるのだろうか。RxJava - イベントが発生するたびにリクエストしてからリクエストします
Observableを購読しているときにネットワークリクエストを行い、特定のイベントが発生するたびに再度リクエストするようにしたいので、オブザーバブルは無限になります。
たとえば、私はgetScreenData()リクエストを持っているとしましょう。私はそれを呼び出す画面を開いたときに、reloginやneedRefreshなどのイベントがある場合は、リクエストを再作成します。次のようである私が思い付く
:私はいくつかのオブジェクトにすべてのこれらのイベントをマッピングする必要があるとして、私はそれがあまり好きではない
Merge(onRelogin().map(a-> null),onNeedRefresh().map(r -> null)).switchMap(o->getData()).startWith(getData);
だけので、私はそれらをマージすることができるようになります(I値について気にしないでください...)、私はスイッチのためにgetData()を2回書く必要があります。
これを実現するにはより良い方法がありますか?他の演算子と一緒に私にそれを取得します。この変圧器はどのようにして変圧器を作るのですか?あなたは自分自身を繰り返さずにそのパターンを取得しますので、私たちは再び要求をしたいと思う程度の観察を聞くことができません。
編集:Observable.merge()は、マップ
問題を解決したり、私が尋ねたことを実行したりしません。私はrepeatWhenに精通しています、それは私がonCompletedを取得したときにのみ繰り返すことができます、それは私が求めているものではありません。 getScreenData()の完了に関係なく、私のオリジナルの実装は新しいリクエストに切り替わります。あなたがgetScreenDataを要求し、あなたがonNeedRefresh()イベントを待っている間、あなたがリピートを使用した場合、再度リクエストしません。可能であれば、古いデータを取得する可能性があります... – ndori
さらに、コンパイルされません。いつでも復帰できません。 – ndori
@ndoriごめんなさい、リクエストの同時実行を希望しているという質問には指定されていません。しかし、それは私のためにうまくコンパイルされます。 – ESala