【问题标题】:Waiting for API Calls to complete with RxJava and Retrofit使用 RxJava 和 Retrofit 等待 API 调用完成
【发布时间】:2018-06-12 15:24:38
【问题描述】:

我在 Kotlin 中使用 RxAndroid 和 RxJava 向 API 发出各种请求并异步接收它们:

    getClient().sendSomeData(data)
            .subscribeOn(Schedulers.io())
            .observeOn(AndroidSchedulers.mainThread())
            .subscribe(
                    {
                        Log.i("upload", "data ok")
                    },
                    {
                        t ->
                        Log.e("upload", "data error: " + t.stackTrace)
                    }
            );


    getClient().sendSomeOtherData(otherData)
            .subscribeOn(Schedulers.io())
            .observeOn(AndroidSchedulers.mainThread())
            .subscribe(
                    {
                        Log.i("upload", "otherData ok")
                    },
                    {
                        t ->
                        Log.e("upload", "data error: " + t.stackTrace)
                    }
            );

等等。 我现在要做的是,“等待”所有 api 请求完成并显示进度。如何等待所有可观察对象完成并获得带有进度的回调?

【问题讨论】:

  • 你可以使用延迟对象。在这个网站上寻找 JavaScript + Deferred,你应该能找到你要找的东西。

标签: android retrofit rx-java


【解决方案1】:

回答你的第一个问题herehere 你会看到提到了Observable.onCompleted 方法,它在成功响应后调用。 here 也是这个方法的文档。所以你可以简单地在subscribe方法调用中实现第三个Action并修改你请求的状态信息。

如果涉及到请求进度状态,我不确定,但我认为 RxJava 不提供开箱即用的此功能。但是我找到了答案here(使用改造库)。

【讨论】:

    猜你喜欢
    • 2018-05-16
    • 1970-01-01
    • 1970-01-01
    • 2017-01-23
    • 2019-03-25
    • 2015-10-28
    • 2020-07-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多