Completable 必须在 observable 的 on next 被触发时完成

Completable must complete when an observable's on next is fired

我有一个 Observable 如下:

    public Observable<List<Object>> getObjectsForUser() {
        return Observable.fromCallable(() -> {
            if (objects.size() < 1) {
                List<ObjectDto> dtos = dataSource.getAllForUser();
                if (dtos != null) {
                    objects = objectMapper.toDomain(dtos);
                }
            }
            return objects;
        }).subscribeOn(Schedulers.io());
    }

这样使用的:

    public Completable refreshOtherObjects() { // How do I return a completable which completes when the code in this lambda Observer has finished execution? 
        objectRepository.getObjectsForUser().subscribe(objects -> {
                for (Object object: objects) {
                    List<OtherObjectDto> dtos = dataSource.getOtherObjects(object.getId());
                    if (dtos != null) {
                        otherObjectDao.upsertOtherObjects(mapper.toEntity(dtos));
                    }
                }
            });
    }

我的问题是:

我如何 return 当最后描述的方法中的 lambda Observer 中的代码完成执行时完成的可完成项?

不是在 refreshOtherObjects 内嵌套 subscribe 调用,而是通过在 .doOnNext 调用内完成该工作来继续 Rx 链,然后将链转换为 Completable 使用 ignoreElements() 运算符:

   public Completable refreshOtherObjects() { // How do I return a completable which completes when the code in this lambda Observer has finished execution? 
        return objectRepository.getObjectsForUser()
            .doOnNext(objects -> {
                for (Object object: objects) {
                    List<OtherObjectDto> dtos = dataSource.getOtherObjects(object.getId());
                    if (dtos != null) {
                        otherObjectDao.upsertOtherObjects(mapper.toEntity(dtos));
                    }
                }
            })
            .ignoreElements();
    }