我在代码部分
中遇到编译错误mCompositeDisposable.add(
Flowable.just(Boolean.TRUE)
.flatMap( ignored ->
service.getPosts(offset,limit, PreferencesUtils.getAccessTokenKey()) )
.subscribeOn(Schedulers.io())
.doOnNext(response -> {
if (!response.isSuccessful()) throw new IllegalAccessException();
})
.retryWhen( error -> error.flatMap( f -> {
if(f instanceof IllegalAccessException)
return Helper.refreshToken();
else
return Flowable.error(f);
}))
.observeOn(AndroidSchedulers.mainThread())
.subscribe(
successResponse -> {
if (!successResponse.body().isEmpty()) {
mView.showNewsFeedItems(successResponse.body());
}
},
failResponse -> { mView.showError(); }
));
这行代码IDE很好地识别并且没有给出任何异常或警告
successResponse的类型为Response<List<Object>>
,但编译器也没有想到并给我error: cannot find symbol method body()
我找不到相似的问题&amp;回答如何解决这个问题。我将非常感谢有关此问题的任何信息!
if (!successResponse.body().isEmpty()) {
mView.showNewsFeedItems(successResponse.body());
}
更新
当我使用Observer(带Observable)时,一切正常,但成本高昂
.subscribe(new Observer<Response<List<NewsFeed>>>() { // lambda doesnt work properly here (in progress)
@Override public void onSubscribe(Disposable s) {}
@Override public void onNext(Response<List<NewsFeed>> feeds) {if(!feeds.body().isEmpty()) mView.showNewsFeedItems(feeds.body());}
@Override public void onError(Throwable e) {}
@Override public void onComplete() {}
});
答案 0 :(得分:0)
如果保证需要此发射,请尝试使用Single.just()。它将为您带来可以在CompositeDisposable中添加的Disposable。订阅Flowable返回订阅,而非Disposable。