Concat 和 return 可观察

Concat and return Observable

我正在尝试弄清楚如何从网络中获取结果,持久化它以及 return 对 Observable 的响应主体。 像这样:

@Override
    public Observable<DefaultUserResponse> createUser(CreateUserCommand command) {
        return this.userService.createUser(command)
                .map(defaultUserResponse -> {
                    User user = new User();
                    defaultUserResponse.setUser(user);
                    return defaultUserResponse;
                }).flatMap(defaultUserResponse -> persist(defaultUserResponse.getUser()));
    }

Observable<User> persist(User user) {return null;}

步骤:

  1. 我从服务器获得了 DefaultUserResponse。
  2. 将命令转换为用户 (command = DTO)
  3. 在本地保留用户。
  4. Return 默认用户响应。

我应该如何进行?

谢谢

考虑将 Completable 类型用于您的持久化方法(如果您不关心返回值):

Completable persist(User user) {
    return Completable.fromCallable(() -> {
        //persisting
        return null;
    }
}

然后您可以使用 andThen 运算符等待持久化完成并进一步推动您的价值:

...
.flatMap(defaultUserResponse -> persist(defaultUserResponse.getUser()).andThen(Observable.just(defaultUserResponse)));

或者,如果您仍想使用 Observable 进行持久化,只需使用另一个 flatMap 而不是 andThen