1

可能的 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 {
                    }
                }));

但我想在一个电话中完成这两项任务。从数据库中获取项目列表,然后对列表的每个项目执行后台任务,最后返回一个列表。我已经阅读过mapflatMapconcatMap不知道如何在这种情况下使用它。目前我已经能够编写这段代码,但不知道它是如何工作的

getDataManager().getAllFilters().concatMap(new Function<List<Filter>, ObservableSource<?>>() {
            @Override
            public ObservableSource<?> apply(List<Filter> filters) throws Exception {
                return null;
            }
        });
4

0 回答 0