我正在尝试使用Rxjava2来实现存储库模式,我已经阅读了这篇文章RxJava 2 — Single.concat sample for Repository Pattern
似乎解决方法是创建一个Container类来帮助检查对象是否为null,这意味着更多的代码结构会发生变化。
它还建议使用Maybe,但没有任何示例。我试过
protected Maybe<Foo> loadDataFromCache() {
return Maybe.just(cacheDataHelper.getFoo());
}
但是当没有缓存数据时,我仍然会收到NullPointerException
那么有人能给我一个如何使用Rxjava2的例子吗?或许可以实现Repository Pattern吗?
答案 0 :(得分:0)
我终于找到了一个可能不是很优雅的答案,但它确实有效。 只需使用Maybe.empty()
示例代码为:
protected Maybe<Foo> getDataFromCache() {
Foo foo = localDataHelper.getFoo();
return foo != null ? Maybe.just(foo) : Maybe.empty();
}
public Single<Foo> loadDataFromMultipleRepos (int teamId) {
Maybe<Foo> apiCallObservable = getDataFromCache().toMaybe();
Maybe<Foo> cacheObservable = loadDataFromCache();
return Maybe.concat(cacheObservable, apiCallObservable)
.toSingle();
}
但我仍在寻找一种更优雅的rx方式来实现getDataFromCache()方法。感谢