Retrofit RxJava嵌套可观测量的循环推理
问题描述:
rxJava中的新增功能我为了通过嵌套改造的Observables来获得Observable而挣扎。 关于代码块.map(userResponse -> { data.put final Intent resd = new Intent(); resd.putExtras(data); return (Intent)resd; });
Retrofit RxJava嵌套可观测量的循环推理
我得到一个循环推理错误。 当我尝试编译我得到一个奇怪的消息,我有些不明白的:
Error:(52, 21) error: incompatible types: cannot infer type-variable(s) R (argument mismatch; bad return type in lambda expression Intent cannot be converted to Observable) where R,T are type-variables: R extends Object declared in method flatMap(Func1>) T extends Object declared in class Observable
这里是代码:
public Observable<Intent> createUser(final String email) {
Bundle data = new Bundle();
return mWebservice.clientAuth("myFakeClientId") //returns an Observable<AccessToken>
.map(clientTokenObject -> {
String clientToken = clientTokenObject.accessToken;
Observable<Response<User>> userResponseObservable = mWebservice.createAccount(email);
Observable<Intent> resultObs = userResponseObservable
.map(userResponse -> {
final Intent resd = new Intent();
resd.putExtras(data);
return (Intent)resd;
});
return resultObs;
});
}
;(
答
你的映射是错了你。需要像
public Observable<Intent> createUser(final String email) {
return mWebservice.clientAuth("myFakeClientId") //returns an Observable<AccessToken>
.map(clientTokenObject -> clientTokenObject.accessToken)
.flatMap(accessToken -> { mWebservice.createAccount(email).
.map(userResponse -> {
final Intent resd = new Intent();
Bundle data = new Bundle();
resd.putExtras(data);
return (Intent)resd;
})});
}
感谢您的回答,我发现了同样的事情(但它是偶然尝试的东西......)我真的没有区别map()和蚂蚁fatMap()(appart flattening stuff),谢谢你的回答 – gropapa
大理石图帮助。检查[平面图文档中的图表](http://reactivex.io/documentation/operators/flatmap.html)。 – JohnWowUs