Как навести порядок запросов http в списке наблюдаемых в Angular 7 - PullRequest
0 голосов
/ 10 ноября 2018

Мне нужно получить список идентификаторов Id => this.getIds () и получить их имена => getNames (id) для каждого идентификатора в списке идентификаторов, используя mergeMap (). Может кто-нибудь, пожалуйста, проверьте, что я делаю неправильно ниже (не компилируется)?

in, 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 }))));
}

in, 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 голосов
/ 10 ноября 2018

Вам нужно изменить сигнатуру вашей функции getIds с:

getIds()<any> 

до

getIds(): any
0 голосов
/ 10 ноября 2018

Вы не возвращаете ничего из getNames метода компонента, который в идеале должен возвращать Observable

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