/ / RxJava2のリポジトリパターン - android、repository-pattern、rx-java2

RxJava2のリポジトリパターン - Android、リポジトリパターン、rx-java2

あなたが Repository パターンとローカルとリモートからの読み込み、それは地元のリターンを持っている意味がある Maybe<T> リモートリターン Single<T>RxJava2

回答:

回答№1の場合は3

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

たとえば、次のようになります。

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

私はそれを前のように使いました。実際、ニューヨークタイムズの影響を強く受けているのは、 ストアライブラリ


回答№2の場合は0

はい、同じケースがありましたが、私はrxjava2をリポジトリパターンに適用していました。 私はすべての私の改造サービスをシングルからアフェアに戻す必要はありませんでしたが、

あなたの質問については、toMaybe()

私のRxjava2リポジトリパターンの例は次のとおりです:

protected Maybe<Foo> loadDataFromCache() {
Foo foo = cachedDataHelper.getFoo();
return foo != null ? Maybe.just(foo) : Maybe.empty();
}

public Single<Foo> loadDataFromMultipleRepos () {
Maybe<Foo> apiCallObservable = new FooCallRx().getAPIObservable(context).toMaybe();
Maybe<Foo> cacheObservable = loadDataFromCache();

return Maybe.concat(cacheObservable, apiCallObservable)
.toSingle();
}