我使用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