繁体   English   中英

使用 rxjs 结合两个 http.get 调用的结果

[英]combine results of two http.get calls using rxjs

我调用了两个不同的 api(两个不同的在线商店),每个都返回相似的数据。 两者都有一些分页信息以及嵌套的项目数组(订单列表)。 我需要组合这些对象以按购买日期的顺序显示完整的项目列表。 我还需要弄清楚如何维护分页数据,因为列表太大而无法完全拉入,所以我必须从两个调用中获取更多数据以填充后续页面。

我正在使用 angular 和 rxjs。 对象如下所示:

回应一:

```{
"startIx": 0,
"page": 1,
"orders":[
    {"orderNumber":"756984",
    "date":"2020-04-02",
    "status":"ORDER_PARTIALLY_PROCESSED",
    "price":7.84,
    "links":[
        {"rel":"store.order",
        "href":"history.jsf"
    }]},
    {"orderNumber":"756985",
    "date":"2020-04-03",
    "status":"ORDER_PARTIALLY_PROCESSED",
    "price":8.54,
    "links":[
        {"rel":"store.order",
        "href":"history.jsf"
        }]}],
"totalOrders":2
}```

回应二:

```{
"startIx": 0,
"page": 1,
"orders":[
    {"orderNumber":"756984",
    "date":"2020-04-02",
    "status":"ORDER_PARTIALLY_PROCESSED",
    "price":7.84,
    "links":[
        {"rel":"store.order",
        "href":"history.jsf"
    }]},
    {"orderNumber":"756985",
    "date":"2020-04-03",
    "status":"ORDER_PARTIALLY_PROCESSED",
    "price":8.54,
    "links":[
        {"rel":"store.order",
        "href":"history.jsf"
        }]}],
"totalOrders":2
}```

期望的结果是这样的,将来自响应 2 的所有订单添加到其中并更新总数。

```{
"startIx": 0,
"page": 1,
"orders":[
    {"orderNumber":"756984",
    "date":"2020-04-02",
    "status":"ORDER_PARTIALLY_PROCESSED",
    "price":7.84,
    "links":[
        {"rel":"store.order",
        "href":"history.jsf"
    }]},
    {"orderNumber":"756985",
    "date":"2020-04-03",
    "status":"ORDER_PARTIALLY_PROCESSED",
    "price":8.54,
    "links":[
        {"rel":"store.order",
        "href":"history.jsf"
    }]},
    {"orderNumber":"756984",
    "date":"2020-04-02",
    "status":"ORDER_PARTIALLY_PROCESSED",
    "price":7.84,
    "links":[
        {"rel":"store.order",
        "href":"history.jsf"
    }]},
    {"orderNumber":"756985",
    "date":"2020-04-03",
    "status":"ORDER_PARTIALLY_PROCESSED",
    "price":8.54,
    "links":[
        {"rel":"store.order",
        "href":"history.jsf"
    }]}],
"totalOrders":4
}```

我对 angular 尤其是 rxjs 和 ngrx 非常陌生,所以我正在寻找一些关于合并列表的最佳方法的建议。

  1. 不同的 api(两个不同的在线商店)使用“forkjoin”
  2. 组合这些对象来显示

    1. forkJoin([api1, api2]).subscribe(response => { // response[0] is api1(response) // response[1] is api2(response) // 2. combine both response data to display });

样本分叉连接

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM