Angular 8发出多个http请求并合并所有结果

问题描述 投票:1回答:1

在Agnular 8中,我试图使用forkJoin执行多个http get请求,然后将所有结果组合成一个简单的Array。

问题是我最终得到一个数组数组...而不是一个字符串数组

下面的我的代码。所有端点都返回字符串列表。

autoCompleteValues: any;

ngOnInit() {

    let res1 = this.dataMessageService.getFoo1();
    let res2 = this.dataMessageService.getFoo2();
    let res3 = this.dataMessageService.getFoo3();
    let res4 = this.dataMessageService.getFoo4();
    let res5 = this.dataMessageService.getFoo5();

    forkJoin([res1, res2, res3, res4, res5]).subscribe(data => {

      this.autoCompleteValues = data;
      console.log(this.autoCompleteValues);
    });
}

我在做什么错?如何将所有结果组合成一个大数组?

angular typescript rxjs angular8 fork-join
1个回答
1
投票

您的代码是正确的,因为这是forkjoin的预期行为您只需要映射一下

forkJoin([res1, res2, res3, res4, res5])
.map(data => data.reduce((result,arr)=>[...result,...arr],[]))
.subscribe(data =>{

  this.autoCompleteValues = data;
  console.log(this.autoCompleteValues);
});

0
投票

您可以这样做

 forkJoin([res1, res2, res3, res4, res5]).map([res1, res2, res3, res4, res5]) => [...res1, ...res2, ...res3, ...res4, ...res5]).subscribe(data => {

          this.autoCompleteValues = data;
          console.log(this.autoCompleteValues);
        });
© www.soinside.com 2019 - 2024. All rights reserved.