我是一个RXJava/RXAndroid的新手。我想实现这个案例:根据一些条件选择不同的方法在RXJava中。例如,首先,我从网络获取用户信息,如果这是一个VIP用户,我将继续从网络获取更多信息或者只在主线程中显示一些信息(打破链条)。这里是流程图:https://istack.dev59.com/0hztR.webp
我对此进行了一些搜索,只发现 "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();
有更简单的方法实现这个吗?
谢谢!