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