轉換RxJava1代碼RXJava2給予這個錯誤,不知道我做錯了RxJava1到Rxjava2遷移錯誤
無類型變量(一個或多個)R的實例(S)存在,使得單>符合ObserableSource
API調用
@GET("/search/users?per_page=2")
Observable<UsersList> searchGithubUsers(@Query("q") String searchTerm);
@GET("https://stackoverflow.com/users/{username}")
Observable<User> getUser(@Path("username") String username);
RxJAva1:
public Observable<List<User>> searchUsers(final String searchTerm) {
return Observable.defer(() -> githubUserRestService.searchGithubUsers(searchTerm).concatMap(
usersList -> Observable.from(usersList.getItems())
.concatMap(user -> githubUserRestService.getUser(user.getLogin())).toList()))
.retryWhen(observable -> observable.flatMap(o -> {
if (o instanceof IOException) {
return Observable.just(null);
}
return Observable.error(o);
}));
}
RXJava2
public Observable<List<User>> searchUsers(final String searchTerm) {
return Observable.defer(() -> githubUserRestService.searchGithubUsers(searchTerm).concatMap(
usersList -> Observable.fromIterable(usersList.getItems())
.concatMap(user -> githubUserRestService.getUser(user.getLogin())).toList()))
.retryWhen(observable -> observable.flatMap(o -> {
if (o instanceof IOException) {
return Observable.just(null);
}
return Observable.error(o);
}));
}
toList()結合在Rxjava2未來這個編譯錯誤toObservable()固定問題,但增加可觀測。只是(0)給出另一個錯誤,「lambda表達式中的錯誤返回類型:Observable
將其更改爲「just((Object)0)'或'。錯誤(o)' –
akarnokd
非常感謝您的解釋,如果您可以通過一些引用鏈接來支持此行,那麼對於登陸此問題的任何人都會很有幫助。「還要注意Observable.just(null)是被禁止的:null一般不會允許與RxJava 2「。 – Sam