RxJava+Retrofit,在联网返回后如何先进行统一的判断?

最近在学习rxjava,首先用于联网部分。数据为json格式。 json格式固定为: { "ResultMessage":null, "ResultCode":0, "Data":{} } 然后我希望联网返回数据先行进行ResultCode判断 起先我想要在rxjava的“链”中throw 一个自定义的Error,让Subscriber的onError方法捕捉到。结果发现行不通。不允许这样写。 用single操作符,里面写上 .single(new Func1<LevelListBean, Boolean>() { @Override public Boolean call(LevelLis…
关注者
173
被浏览
11667
你可以让你自己定义的异常继承RuntimeException,这样子就可以throw了。

如果无法修改你的异常去继承RuntimeException,也可以像下面这样子用flatMap:

.flatMap(levelListBean -> {
    if (levelListBean.getResultCode() == Constants.SUCCESS_CODE) {
        return Observable.just(levelListBean);
    } else {
        return Observable.error(exception);
    }
})
还有一种方法是用switchIfEmpty,例如
.filter(levelListBean -> levelListBean.getResultCode() == Constants.SUCCESS_CODE)
.switchIfEmpty(Observable.error(exception))