代码之家  ›  专栏  ›  技术社区  ›  nicowernli

HttpClient进入后加载多个元素

  •  0
  • nicowernli  · 技术社区  · 6 年前

    [{
      groupName: "someName",
      groupDescription: "someDescription",
      items: ["id1", "id2", "id3"]
    }, {...}]
    

    我想要的结果是完整的项目也从API调用。

    所以我想

    • 使用httpClient.get调用API以接收初始JSON
    • “groupName”:“someName”, “groupDescription”:“someDescription”, “items”:[{id:“id1”,name:“item1 name”},{id:“id2”,name:“item2 name”}]

    我正在努力寻找正确的操作符来合并所有的东西。

    1 回复  |  直到 6 年前
        1
  •  2
  •   martin    6 年前

    你可以绘制地图 forkJoin 将结果转换为原始响应。例如:

    this.httpClient.get(...)
      .pipe(
        mergeMap(response => {
          const observables = response.items.map(id => this.httpClient.get(`.../${id}`));
    
          return forkJoin(...observables).pipe(
            map(items => {
              response.items = items;
              return response;
            }),
          );
        }),
      )
      .subscribe(...)
    

    mergeAll 就在第一次之后 this.httpClient.get(...) toArray() 制作一个大的物体阵列。