代码之家  ›  专栏  ›  技术社区  ›  Praveen Puglia

角度中嵌套http请求的嵌套观察值

  •  1
  • Praveen Puglia  · 技术社区  · 9 年前

    • https://reqres.in/api/users/2
    • 它发送如下响应。

      {
        "data": {
          "id": 2,
          "first_name": "Janet",
          "last_name": "Weaver",
          "avatar":
            "https://s3.amazonaws.com/uifaces/faces/twitter/josephstein/128.jpg"
        }
      }
      
      • 最后,我想要的输出是一个可观察的,它给了我这些数据。

        {
          "data": {
            "id": 2,
            "first_name": "Janet",
            "last_name": "Weaver",
            "avatar":
              "BINARY_GIBBERISH HERE"
          }
        }
        

    this.http
      .get('https://reqres.in/api/users/2')
      .switchMap(a => {
        const image$ = this.http.get(a.json().data.avatar);
        const data = Observable.of(a.json().data);
        // Do something here to combine.
      })
      .subscribe(a => {
        // get data here.
      });
    }
    

    基本上,有没有这样的结构,

    {
      "data": {
        "id": 2,
        "first_name": "Janet",
        "last_name": "Weaver",
        "avatar": [Observable from this.http.get]
      }
    }
    

    然后哪个会被解析为我的最终数据?

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

    你不需要使用 switchMap 为此,请使用 concatMap mergeMap

    this.http
      .get('https://reqres.in/api/users/2')
      .concatMap(a => {
        const data = a.json().data;
        const image$ = this.http.get(data.avatar);
    
        return image$.map(imageData => {
          data.avatar = imageData;
          return data;
        });
      })
      .subscribe(a => {
        // get data here.
      });
    }