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

标签 angular typescript rxjs

我正在尝试使用 forkJoin 执行多个 http get 请求,然后使用 Angular 8 将所有结果合并到一个简单的数组中。

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

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

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

我做错了什么?如何将所有结果合并到一个大数组中?

最佳答案

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

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

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

关于Angular 8发出多个http请求并合并所有结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58603183/

相关文章:

angular - 在 Angular 4 中使用 ID 进行路由

angular - 哪个性能更好? ngx-translate 指令还是管道?

SQLite 不适用于 Ionic 2

浏览器中的 TypeScript : Uncaught SyntaxError Unexpected Identifier

javascript - 运行多个测试时,rxjs/redux observable Actions 以错误的顺序调度

javascript - angular2 使用 npm 中的 twitter 模块

javascript - 停止 ionic 交换发射,直到从存储加载值

typescript - 我可以强制 TypeScript 解析 Pick<T, K> 的类型以进行显示吗?

javascript - Angular - 从多个订阅中获取一个订阅

typescript - RxJS 中切换订阅最优雅的方式