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

我有 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);

}

但它不起作用。我该怎么做?


一只名叫tom的猫
浏览 86回答 1
1回答

九州编程

您的流是在执行之前创建的,因此在创建期间 token=null ,因此您将在getUserInfo. flatMap会帮助你。public Completable getUserInfo() {&nbsp; &nbsp; return storeProvider.getToken()&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; .flatMap(token -> webProvider.getUserInfo(token))&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; .flatMapCompletable(userInfo -> storeProvider.saveUserInfo(userInfo));}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java