問題タブ [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.

0 投票する
1 に答える
86 参照

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:

ユーザーのフィードを取得するインタラクターは次のようになります。