我有 2 单。首先我收到令牌,然后我需要使用它,然后我必须从第二张单曲中保存一些信息并返回可完成的。我想用 Completable 和 andThen 来做到这一点,就像这样:String token;IStoreProvider storeProvider;IWebProvider webProvider;public Completable getUserInfo(){    return Completable.fromSingle(Completable            .fromSingle(storeProvider                    .getToken()                    .doOnSuccess(x->token=x))            .andThen(webProvider.getUserInfo(token)                    .doOnSuccess(x->storeProvider.saveUserInfo(x)));interface IStoreProvider{    Single<String> getToken();    Completable saveUserInfo(UserInfo userInfo);}interface IWebProvider{    Single<UserInfo> getUserInfo(token);}但它不起作用。我该怎么做?
                    
                    
                1 回答
 
                    
                    
                            九州编程
                            
                                
                            
                        
                        
                                                
                    TA贡献1785条经验 获得超4个赞
您的流是在执行之前创建的,因此在创建期间 token=null ,因此您将在getUserInfo. flatMap会帮助你。
public Completable getUserInfo() {
return storeProvider.getToken()
.flatMap(token -> webProvider.getUserInfo(token))
.flatMapCompletable(userInfo -> storeProvider.saveUserInfo(userInfo));
}
添加回答
举报
0/150
	提交
		取消
	