問題タブ [clean-architecture]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
android - rx.Obseravables を順次実行する
Fernando Ceja のクリーン アーキテクチャを使用して Android アプリを開発しています。私のインタラクターまたはユース ケースの 1 つが、ユーザーのフィード データの取得を担当しています。データを取得するには、まずデータベース テーブルからユーザーのチームを取得し、次にサーバー側からフィード リストを取得する必要があります。
これは、データベース レイヤーからチームを取得する方法です。
TeamCache は基本的に、データベースにあるすべてのチームを取得する別の Interactor です。
サーバー側からフィード データを取得する方法は次のとおりです。
私の GetFeedInteractor クラスには execute と呼ばれるメソッドがあり、後で応答を処理するために UI で使用する Callback を渡します。これらすべての問題は、現在、次のように応答を連鎖させていることです。
ご覧のとおり、Cache Interactor から Team コレクションを取得したら、まったく同じ Subscriber からフィードを取得するメソッドを呼び出します。私はこれが好きではありません。Observable.concat(getTeamsFromCache(), getFeedFromRepository()); を使用するなど、より良いことができるようにしたいと考えています。サブスクライバー内の別の rx.Observable への呼び出しをチェーンすることは、良いことではありません。私の質問は、異なるサブスクライバーを使用している 2 つの rx.Observables をチェーンするにはどうすればよいですか?
アップデート:
ServerSubscriber は、Retrofit サービスにサブスクライブするために実装したサブスクライバーです。エラーコードなどをチェックするだけです。ここは:
https://gist.github.com/4gus71n/65dc94de4ca01fb221a079b68c0570b5
デフォルト サブスクライバは、空のデフォルト サブスクライバです。ここは:
https://gist.github.com/4gus71n/df501928fc5d24c2c6ed7740a6520330
TeamCache#getAllTeams() は rx.Observable を返します> FeedRepository#getFeed(int page, int offset) は rx.Observable を返します>
更新 2:
ユーザーのフィードを取得するインタラクターは次のようになります。