2017-12-18 9 views
1

Repositoryパターンを使用してローカルとリモートからロードする場合は、ローカル戻り値Maybe<T>とリモート戻り値Single<T>RxJava2に入れるのは意味がありますか?RxJava2のリポジトリパターン

答えて

2

間違いなく!ディスク/メモリキャッシュをMaybeに戻し、空の場合はSingleネットワークソースから戻るように切り替えてください。 DBが何かを返すかもしれないし、返さないかもしれないので、それはよりきれいで論理的になり、ネットワーク応答はたいていいつもSingleである。最終的な回答はSingleです。

例は次のようになります。

@Override 
public Single<E> get(long id) { 
    return fetchFromDb(id) 
      .switchIfEmpty(fetchFromNetwork(id)) 
      .subscribeOn(schedulerProvider.io()); 
} 

私は以前に上記のようにそれを使用しています。実際、上記はニューヨークタイムズの影響を大きく受けています。Store library