我有 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
提交
取消