如何使用依赖于第一个可观察数据的第二个可观察数据更新第一个可观察数据

问题描述 投票:0回答:1

在Android中使用Retrofit结合RxJava我得到一个Observable对象。里面我有一个清单;在表中,我有包含来自对象 Product 的外键的属性。 我的目标是获取 ServiceProductBOM.List,对于每个带有外键的表,我想获取 Observable 并使用来自 Product 的数据更新表中的字段,以便我拥有即产品代码及其密钥。 在该过程结束时,我想将 List 传递给适配器。我想知道如何开发反应部分。

我尝试过这样的事情:

class ServiceProductBOM {
    properties....
    List<Table>

    // getters and setters
}

class Table {
    properties...
    productForeignKey
    productCode // empty to be updated later

    // getters and setters
}

class Product {
    properties...
    key
    productcode
    ....

    // getters and setters
}


retrofitWSClient.getServiceProductBOM(...)
.flatMapIterable(bom -> bom.getTable())
.flatMap(row -> retrofitWSClient.getProduct(...)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread());

Once subscribed I do not know how to update the Table properties with properties from Product and keep trace to the end of process.

android retrofit rx-java2
1个回答
0
投票

最后我做了这样的事情:

Observable<Table> observableTable = Observable.fromIterable(bom.getTable());
Observable<Product> productObservable = observableTable
    .doOnNext(table -> {
        rowTemp = table;
    })
    .flatMap(table -> retrofitWSClient.getProduct(...))
    .doOnNext(product -> {
        rowTemp.setProductCode(product.getProductCode());
        updatedBom.add(rowTemp);
    })

一旦订阅了productObservable并完成,我发现updatedBom填充了用Product数据更新的所有行。

© www.soinside.com 2019 - 2024. All rights reserved.