Как получить доступ к источнику, наблюдаемому из 2 различных объектов в RxJava? - PullRequest
0 голосов
/ 07 мая 2019

У меня проблема с моими наблюдаемыми объектами, в основном у меня есть операция блокировки пользовательского интерфейса, и я обернул ее Observable.defer(), и эта операция блокировки имеет тип возврата Projects.Это Projects необходимо передать другой операции блокировки, поэтому эту вторую операцию блокировки поместили в Observable.flatMap, и я приковал ее к источнику Observable.Но проблема в том, что у меня есть другая блокирующая операция, для которой требуется тип возврата String источника.Очевидно, я поместил эту третью блокирующую операцию в Observable.flatMap, но я не могу связать ее со второй наблюдаемой.Так как же на самом деле сделать это правильно / эффективно?

Observable deferObs = Observable.defer(new Callable<ObservableSource<?>>() {
            @Override
            public ObservableSource<?> call() throws Exception {
                return Observable.just(projectsBaseDAO.insert(projects));
            }
        });
Observable<Image> imageObservable = projectsObservable.flatMap(new Function<Projects, ObservableSource<Image>>() {
            @Override
            public ObservableSource<Image> apply(Projects projects) throws Exception {

                return Observable.just(imageBaseDAO.insert(new Image(projects.getObjectId(), thumbnailName, thumbnailPath, false)));
            }
        });
Observable<Integer> statusObservable = projectsObservable.flatMap(new Function<Projects, ObservableSource<Integer>>() {
            @Override
            public ObservableSource<Integer> apply(Projects projects) throws Exception {
                List<Status> projectStatuses = new ArrayList<>();
                for(String statuses : multipleChoiceDialog.getSelectedValues()){
                    projectStatuses.add(new Status(statuses, projects.getObjectId()));
                }
                return Observable.just(statusBaseDAO.insertAll(projectStatuses));
            }
        });
...