Rx java 改进RxJava嵌套观测中的循环推理
在rxJava中,我正在努力通过嵌套改进的可观察对象来获得一个可观察对象。 在代码块Rx java 改进RxJava嵌套观测中的循环推理,rx-java,retrofit2,rx-android,Rx Java,Retrofit2,Rx Android,在rxJava中,我正在努力通过嵌套改进的可观察对象来获得一个可观察对象。 在代码块.map(userResponse->{ 数据输入 最终意图resd=新意图(); 研究结果(数据); 返回(意图)resd; }); 我得到一个循环推理错误。 当我试图编译时,我得到一个奇怪的消息,我不太明白: 错误:(52,21)错误:不兼容的类型:无法推断类型变量R (参数不匹配;lambda表达式中的返回类型错误) 意图无法转换为可观察的) 其中R,T是类型变量: R扩展方法flatMap中声明的对象(F
.map(userResponse->{
数据输入
最终意图resd=新意图();
研究结果(数据);
返回(意图)resd;
});代码>
我得到一个循环推理错误。
当我试图编译时,我得到一个奇怪的消息,我不太明白:
错误:(52,21)错误:不兼容的类型:无法推断类型变量R
(参数不匹配;lambda表达式中的返回类型错误)
意图无法转换为可观察的)
其中R,T是类型变量:
R扩展方法flatMap中声明的对象(Func1>)
T扩展类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;
});
}
公共可观察createUser(最终字符串电子邮件){
Bundle data=新Bundle();
return mWebservice.clientAuth(“myFakeClientId”)//返回可观察的
.map(clientTokenObject->{
字符串clientToken=clientTokenObject.accessToken;
Observable userResponseObservable=mWebservice.createAccount(电子邮件);
可观察的结果BS=用户响应可观察
.map(用户响应->{
最终意图resd=新意图();
研究结果(数据);
返回(意图)resd;
});
返回结果;
});
}
);(您的映射错误。您需要
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;
})});
公共可观察createUser(最终字符串电子邮件){
return mWebservice.clientAuth(“myFakeClientId”)//返回可观察的
.map(clientTokenObject->clientTokenObject.accessToken)
.flatMap(accessToken->{mWebservice.createAccount(电子邮件)。
.map(用户响应->{
最终意图resd=新意图();
Bundle data=新Bundle();
研究结果(数据);
返回(意图)resd;
})});
}您的映射错误。您需要以下内容
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;
})});
公共可观察createUser(最终字符串电子邮件){
return mWebservice.clientAuth(“myFakeClientId”)//返回可观察的
.map(clientTokenObject->clientTokenObject.accessToken)
.flatMap(accessToken->{mWebservice.createAccount(电子邮件)。
.map(用户响应->{
最终意图resd=新意图();
Bundle data=新Bundle();
研究结果(数据);
返回(意图)resd;
})});
}谢谢你的回答,我发现了同样的事情(但这是偶然尝试的事情…)我真的不明白map()和fatMap()之间的区别(显示平坦的东西),谢谢你的回答和帮助。检查。谢谢你的回答,我发现了同样的事情(但这是偶然尝试的事情…)我真的不明白map()和fatMap()之间的区别,谢谢你的回答和帮助。