/ / RxJava2 में रिपोजिटरी पैटर्न - एंड्रॉइड, रिपॉजिटरी-पैटर्न, आरएक्स-जावा 2

RxJava2 में रेपोजिटरी पैटर्न - एंड्रॉइड, रिपोजिटरी-पैटर्न, आरएक्स-जावा 2

यदि आप इसका उपयोग कर रहे हैं Repository पैटर्न और स्थानीय और दूरदराज से लोड करने, यह स्थानीय वापसी के लिए समझ में आता है Maybe<T> और दूरस्थ वापसी Single<T> में RxJava2?

उत्तर:

जवाब के लिए 3 № 1

निश्चित रूप से! आप अपनी डिस्क / मेमोरी कैश को वापस कर सकते हैं Maybe और अगर यह खाली है, से लौटने के लिए स्विच करें Single नेटवर्क स्रोत। डीबी इसे साफ और तार्किक बनाता है क्योंकि डीबी कुछ भी वापस नहीं कर सकता है और न ही नेटवर्क रिस्पांस ज्यादातर हमेशा सिंगल ही रहता है। आपकी अंतिम प्रतिक्रिया एक हो सकती है Single.

एक उदाहरण होगा:

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

मैंने इसे पहले की तरह ऊपर इस्तेमाल किया है। वास्तव में, उपरोक्त न्यूयॉर्क टाइम्स से काफी प्रभावित है, लाइब्रेरी को स्टोर करें


जवाब के लिए 0 № 2

हां, मेरे पास एक ही मामला था, जबकि मैं रिपॉजिटरी पैटर्न में rxjava2 लागू कर रहा था। मैं नहीं चाहता था कि मेरी सभी रेट्रोफिट सेवा को सिंगल से हो सकता है पर वापस लौटाएं,

अपने प्रश्न के लिए, बसMaybe () का उपयोग करें

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();
}