Rx java 改进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

在rxJava中,我正在努力通过嵌套改进的可观察对象来获得一个可观察对象。 在代码块
.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()之间的区别,谢谢你的回答和帮助。