如何在Angular 7中的可观察对象列表上强制执行订单http请求

时间:2018-11-09 22:23:14

标签: javascript angular http angular7

我需要获取ID的ID列表=> this.getIds()并获取其名称  =>使用mergeMap()为ID列表中的每个ID获得getNames(id)。 有人可以在下面检查我做错了什么(无法​​编译)吗?

在myservice.ts中:

getIds()<any> {
     this.http
        .post(url1, '')
        .subscribe(map(({ Ids }: any) => Ids.map(item => ({Id: item.Id, Name: item.Name }))));
    }
getNames():Observable<any[]> {
     return this.http
        .post(url2, '')
        .pipe(map(({ Names }: any) => Names.map(item => ({Sid: item.Id, Name: item.Name }))));
}

在component.ts中:

  getIds(): void {
  this.myservice
     .getIds.pipe(
     mergeMap(id => this.getNames(id)),
     mergeMap(names => names),
     toArray()
     )
  }
getNames(): void {
   this.myservice
     .getNames(ids)
     .subscribe(val => this.data = val);
  }

2 个答案:

答案 0 :(得分:0)

您不会从getNames组件方法中返回任何内容,理想情况下,该方法应该返回一个Observable

getNames(): void {
   return this.myservice
      .getNames(ids)
}

答案 1 :(得分:0)

您需要从以下位置更改getIds函数的签名:

getIds()<any> 

getIds(): any