【问题标题】:Retrofit2 parallel response handling with observablesRetrofit2 并行响应处理与 observables
【发布时间】:2018-04-01 10:07:59
【问题描述】:

我正在开发一个用户可以在注册后编辑他/她的个人资料的应用。问题是编辑配置文件使用对后端的多个 API 调用。一个用于编辑电子邮件,一个用于编辑密码等等。我将retrofit2 与RxJava 结合使用,因此调用是Observables/Singles。当用户按下编辑按钮并且调用在不同的线程上执行时,会显示一个微调器。如果并行执行成功/失败,我该如何处理?用户需要知道编辑是否成功,并在调用完成时隐藏微调器。我不能使用 combineLatest,因为用户可能会选择只更改他们的电子邮件或个人资料图片或姓名,因此只会调用那些而不是全部。

【问题讨论】:

    标签: android rx-java retrofit2 rx-android


    【解决方案1】:

    我不能使用 combineLatest,因为用户可能会选择仅更改 他们的电子邮件或个人资料图片或姓名,因此只有那些会被调用 而不是全部

    也许您可以伪造 API 调用。

    Observable.zip(
            pictureObservable.flatmap(picture -> {
                 if (picture.isNotChanged) return Observable.just(API.SUCCESS);
                 else return api.editObservable(picture); 
            }, 
            emailObservable.flatmap(email -> {
                 if (email.isNotChanged)  return Observable.just(API.SUCCESS);
                 else return api.editObservable(email);
           }, (pictureApiResponse, emailApiResponse) -> apiResponse));
    

    【讨论】:

      【解决方案2】:

      使用 .flatMap() 或其他方法将所有调用合并到一个 observable 中,并在 .doOnSubcribe() 中打开/关闭微调器 on.doAfterTerminate() off 的组合 observable。

      【讨论】:

        猜你喜欢
        • 2020-04-22
        • 2017-10-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-01-27
        • 2016-12-28
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多