可能重复RxJava performing operation on a list and returning an observable
我是rxJava的新手。我想要实现的是从数据库获取数据ArrayList
并对ArrayList
的每个项执行一些操作。我想在一个rxjava调用/代码中完成所有这些。以下是我的代码,以获取数据库中正常工作的项目列表。
getCompositeDisposable().add(getAllFilters()
.subscribeOn(getSchedulerProvider().io())
.observeOn(getSchedulerProvider().ui())
.subscribe(new Consumer<List<Filter>>() {
@Override
public void accept(List<Filter> filters) throws Exception {
}
}));
public Observable<List<Filter>> getAllFilters() {
return Observable.fromCallable(new Callable<List<Filter>>() {
@Override
public List<Filter> call() throws Exception {
return mAppDatabase.filterDao().getFilters();
}
});
}
我想要的是在后台线程中对每个列表项执行一些操作并生成最终列表。要做到这一点,我必须进行另一个rxjava调用,如下所示:
getCompositeDisposable().add(applySomeOperation()
.subscribeOn(getSchedulerProvider().io())
.observeOn(getSchedulerProvider().ui())
.subscribe(new Consumer<List<Filter>>() {
@Override
public void accept(List<Filter> filters) throws Exception {
}
}));
但我想在一次通话中完成这两项任务。从数据库中获取项目列表,然后对列表中的每个项目执行后台任务,最后返回一个List。我已阅读有关map
,flatMap
和concatMap
的内容,但我们不知道如何在此上下文中使用它。目前我已经能够编写此代码,但不知道它是如何工作的
getDataManager().getAllFilters().concatMap(new Function<List<Filter>, ObservableSource<?>>() {
@Override
public ObservableSource<?> apply(List<Filter> filters) throws Exception {
return null;
}
});