可能的 Duplicate RxJava 对列表执行操作并返回一个 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 {
}
}));
但我想在一个电话中完成这两项任务。从数据库中获取项目列表,然后对列表的每个项目执行后台任务,最后返回一个列表。我已经阅读过map
,flatMap
但concatMap
不知道如何在这种情况下使用它。目前我已经能够编写这段代码,但不知道它是如何工作的
getDataManager().getAllFilters().concatMap(new Function<List<Filter>, ObservableSource<?>>() {
@Override
public ObservableSource<?> apply(List<Filter> filters) throws Exception {
return null;
}
});