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;}
步骤:
- 我从服务器获得了 DefaultUserResponse。
- 将命令转换为用户 (command = DTO)
- 在本地保留用户。
- 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
。
我正在尝试弄清楚如何从网络中获取结果,持久化它以及 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;}
步骤:
- 我从服务器获得了 DefaultUserResponse。
- 将命令转换为用户 (command = DTO)
- 在本地保留用户。
- 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
。