我有两个观察值:Observable<User> createUser(UserData userData)
Observable<Void> loginUser(User user)
用户创建新帐户后,我希望使用该新帐户登录。所以我做到了:
createUser(userData).map(user -> loginUser(user));
但是通过这种方式,我得到了
Observable<Void>
作为回报。我想做的就是调用createUser(userData).map(user -> loginUser(user))
并获得Observable<User>
作为回报。像这样:@Override
public Observable<User> createUserAndLogin(){
createUser(userData).map(user -> loginUser(user));
}
我该怎么办?
最佳答案
为什么不使用登录作为doOnNext
的副作用?
createUser(userData).doOnNext(user -> loginUser(user));
如果要确保登录发生:
createUser(userData).flatMap(user -> {
// attach a callback to the log-in and return
// the user from the previous call
return loginUser(user).map(dontCare -> user);
});
但是我不确定
loginUser
如果什么都不发出,它将如何工作,所以也许强行将您想要的值连接到空的loginUser
可观察值: createUser(userData).flatMap(user -> {
// attach a callback to the log-in and return
// the user from the previous call
return loginUser(user).concatWith(Observable.just(user));
});
关于java - 在Rx Java中获得链式map()调用的倒数第二个可观察值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36115453/