【问题标题】:Rx Android combine multiple calls to the same service in parallelRx Android 并行组合对同一服务的多个调用
【发布时间】:2017-01-19 21:27:40
【问题描述】:

我必须改进一项旧服务,该服务对同一服务进行多次连续调用并将所有结果合并到一个列表中。

假设我们有一个 IDS = [ 1 ,2 3, .. 6] 的列表,所以我必须使用每个 ID 调用相同的 API(使用改造和 Observables)。

为此,我想使用 Rx Android,但我对如何合并结果存有疑问。

        Integer[] ids = {1, 2, 3};

        Observable.from(ids)
                .map(id -> mApi.getData(id))

我们可以并行调用并按照相同的顺序合并结果吗?

为了提高时间响应,我的想法是并行执行此操作,但我不知道如何确保结果将按照我们执行服务器调用的相同顺序进行组合。

我想使用 concat (http://reactivex.io/documentation/operators/concat.html) 但它等待前一个 observable 等待。

【问题讨论】:

    标签: android rx-android rx-java2


    【解决方案1】:

    参见concatMapEager 及其变体。

    Observable.fromArray(1, 2, 3)
    .concatMapEager(id -> 
        Observable.fromCallable(() -> mApi.getData(id))
        .subscribeOn(Schedulers.io())
    )
    .subscribe(...);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-01
      • 2021-06-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多