我正在使用retrofit,rxjava和realm来构建应用程序。这就是我想要实现的目标:
我知道如何使用领域,正确改造,但它的rxjava部分令人困惑。使用rxjava有一种简单的方法吗?
这是当前代码库的样子:
CategoryRepository.java
public Observable<List<Category>> getCategories() {
return getCategoriesFromNetwork()
.observeOn(Schedulers.computation())
.doOnNext(this::saveCategoriesToDisk)
.publish(nwResponse -> Observable.merge(nwResponse, getCategoriesFromDisk().takeUntil(nwResponse)));
}
private Observable<List<Category>> getCategoriesFromNetwork() {
return service.getCategories()
.map(categoryListResponse -> categoryListResponse.getData());
}
private Observable<List<Category>> getCategoriesFromDisk() {
return Observable.just(realm.copyFromRealm(
realm.where(Category.class).findAll()
));
}
视图模型
categoryRepository.getCategories()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(categories -> {
//Do UI stuff
}, throwable -> {
});
答案 0 :(得分:0)
要同时调用这两个函数,您可以使用$("#ruleSearch").keyup(function() {
var data = this.value.toLowerCase();
$('.ruleDetailsPlaceholder').unhighlight();
if (data !== "") $('.ruleDetailsPlaceholder').highlight(data);
})
运算符或Zip
运算符。它们本质上是相同的,我认为区别在于zip继续你需要两个新的observable并且对于最新组合你只需要一个新的observable来继续lambda。
做一些事情列出这个:
combineLatest