如何在RX Java链中使用“if-else”?
我是RXJava / RXAndroid上的新手。我想实现这个案例:根据RXJava中的某些条件选择不同的方式。例如,首先,我从网络获取用户信息,如果这是VIP用户,我将继续从网络获取更多信息,或者只是在主线程中显示一些信息(断开链)。以下是流程图:https://i.stack.imgur.com/0hztR.png
我对此进行了一些搜索,只发现“switchIfEmpty”可能会有所帮助。我写了下面的代码:
getUserFromNetwork("userId")
.flatMap(new Function<User, ObservableSource<User>>() {
@Override
public ObservableSource<User> apply(User user) throws Exception {
if(!user.isVip){
//show user info on MainThread!
return Observable.empty();
}else{
return getVipUserFromNetwork("userId");
}
}
}).switchIfEmpty(new ObservableSource<User>() {
@Override
public void subscribe(Observer<? super User> observer) {
//show user info in main thread
//just break the chain for normal user
observer.onComplete();
}
}).doOnNext(new Consumer<User>() {
@Override
public void accept(User user) throws Exception {
//show vip user info in main thread
}
}).subscribe();
有没有更简单的方法来实现这一目标?
谢谢!