我试图弄清楚如何从网络中获取结果,将其保留下来并将响应正文返回给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;}


脚步:


我从服务器获取DefaultUserResponse。
将命令转换为用户(命令= DTO)
在本地坚持用户。
返回DefaultUserResponse。


我应该如何进行?

谢谢

最佳答案

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

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


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

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


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

10-05 23:58