使用Rx Java的zip运算符基于某些条件的两个或更多HTTP调用

时间:2017-07-23 11:07:17

标签: retrofit rx-java rx-android

我正在尝试通过zip运算符使用Android RxJava发出3个HTTP Api调用。

我的问题是,在触发3个API时,对于一个API,我需要检查用户是否已登录。如果用户没有登录,我不应该触发三个API调用(我应该只触发两个API调用)。如果用户已登录,则必须触发3个API调用。任何基于条件触发两个或三个API调用的内置方法?

1 个答案:

答案 0 :(得分:0)

这是一个应该运作得很好的例子。如果您检查用户是否已登录的方法是异步的,请告诉我,我将发布一个后续答案:

public Observable<Type> getUserData(){
    if(getCurrentUser() != null){
        return Observable.zip(api1(), api2(), api3(), (1, 2, 3) -> {
            *Combining Function*
        });
    }else{
        return Observable.zip(api1(), api2(), (1, 2) -> {
            *Combining Function*
        });
    }
}