NetworkBoundResource 未按预期工作

我有一些有线问题。当我第一次订阅时,它会进行网络调用,并将数据保存到数据库中,但永远不会执行,并且没有引发任何错误。loadFromDb()


为什么会发生这种情况?


    Flowable<Resource<List<List<DataSource>>>> getBoundResource(List<String> parentId) {

    return new RxNetworkBoundResource<List<List<DataSource>>,

            ContainerResponse>() {

        @Override

        void saveCallResult(@NonNull List<ContainerResponse> data) {

            for (ContainerResponse item : data) {

                // Saves data to database

                List<DataSource> items = item.items;

                containerDao.insert(items);

            }

        }


        @Override

        protected Flowable<List<List<DataSource>>> loadFromDb() {

            return Flowable.just(parentId).flatMapIterable(d -> d)

                    .flatMap(s -> containerDao.loadContainerByParentIdRx(s))

                    .distinct()

                    .doOnNext(data -> {

                        // I am able to get data here

                    })

                    .toList() // I'm not able to get data after toList()

                    .toFlowable()

                    .doOnNext(data -> {

                        // Nothing here

                    });

        }


翻阅古今
浏览 92回答 1
1回答

莫回无

请注意,仅在其上游完成后才会发出。医生.toList()此处的问题很可能是由于此代码返回了 未完成的 :FlowablecontainerDao.loadContainerByParentIdRx(s)如果这永远不会完成,那么结果也不会完成,也不会发出任何东西。FlowableflatMaptoList()如果只查找数据库一次,则一个选项是将返回类型更改为 或 。例如,如果切换到 ,则可以执行以下操作:SingleMaybeMaybe&nbsp; &nbsp; @Override&nbsp; &nbsp; protected Flowable<List<List<DataSource>>> loadFromDb() {&nbsp; &nbsp; &nbsp; &nbsp; return Flowable.just(parentId).flatMapIterable(d -> d)&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; .flatMapMaybe(s -> containerDao.loadContainerByParentIdRx(s))&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; .distinct()&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; .doOnNext(data -> {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // I am able to get data here&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; })&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; .toList() // You should now get this as well.&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; .toFlowable()&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; .doOnNext(data -> {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // Nothing here&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; });&nbsp; &nbsp; }
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java