我使用RxJava进行了Retrofit请求API调用。一切运作良好。如何在RxJava中使用Retrofit管理结果
如何优化此代码。我是RxJava的新人。 我将不胜感激一个小例子的代码或链接。 谢谢。
Observable<Review> observer = Observable.just(review);
observer.subscribeOn(Schedulers.newThread())
.observeOn(Schedulers.newThread())
.map(new Func1<Review, Uri>() {
@Override
public Uri call(Review review) {
Uri uri = null;
/// Some code
return uri;
}
}).subscribe(new Action1<Uri>() {
@Override
public void call(Uri uri) {
if(uri != null) {
Api.Reviews reviewApi = retrofit.create(Api.Reviews.class);
Observable<BaseResponse<Review>> reviews = reviewApi.createReview(authToken, review);
reviews.subscribeOn(Schedulers.newThread())
.observeOn(AndroidSchedulers.mainThread())
.map(new Func1<BaseResponse<Review>, Void>(){
@Override
public Void call(BaseResponse<Review> response) {
//Code Here
return null;
}
}).subscribe();
}
}
});
注意:要得到好的lambda符号,[retrolambda](https://github.com/evant/gradle-retrolambda) – njzk2
第一个地图示例有点尴尬。如果'save(r)'返回一个可观察值,那么第三个使用flatmap会更有意义,这样就可以很好地链接。 – njzk2