Concat并返回Observable

时间:2017-04-11 22:10:05

标签: java android rx-java rx-java2

我试图弄清楚如何从网络中获取结果,坚持并将响应主体返回给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. 返回DefaultUserResponse。
  5. 我该怎么办?

    由于

1 个答案:

答案 0 :(得分:1)

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

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

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

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

或者,如果您仍希望使用Observable进行保留,请使用其他flatMap代替andThen