所以基本上我要做的就是进行第一次网络通话 . 如果被调用的RESTful Web服务返回1,则进行第二次网络调用 . 如果Web服务返回0,则不进行第二次网络呼叫 .
这是我的代码
final ApiInterface apiInterface=restAdapter.create(ApiInterface.class);
apiInterface.submitDataToAnalyze("dataToAnalyze","852741963",1,"123","lalala","2015-11-20")
.flatMap(new Func1<BasicResponse, Observable<?>>() {
@Override
public Observable<?> call(BasicResponse basicResponse) {
if (basicResponse.getResult() == 1){
return apiInterface.getSuggestion("dataToAnalyze","852741963",1,"123","lalala","2015-11-20");
}else{
return 0; //error
}
}
}).subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread());
显然上面的代码是错误的,因为它应该总是返回Observable . 那么,如果第一个网络调用返回0,我的代码应该怎么写?
1 回答
我认为最佳做法是返回
Observable.error(new Throwable("..."))
取自javadoc: