来自 Angular 中嵌套 http 请求的嵌套 Observable

Nested Observables from nested http requests in Angular

这是我打算做的。

这是我接近但无法完成的方式。

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]
  }
}

然后解析为我的最终数据?

您不需要为此使用 switchMap,而是使用 concatMapmergeMap

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.
  });
}