Я новичок в 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();
Есть ли более простой способ добиться этого?
Спасибо!