为了账号安全,请及时绑定邮箱和手机立即绑定

如何从第一个开始使用源代码一个接一个地运行一个单曲

如何从第一个开始使用源代码一个接一个地运行一个单曲

一只名叫tom的猫 2022-05-21 21:02:14
我有 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));

}


查看完整回答
反对 回复 2022-05-21
  • 1 回答
  • 0 关注
  • 85 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信