如何在角度调用多个请求并获得结果?

时间:2018-07-08 00:51:02

标签: javascript angular

我正尝试使用forkJoin来异步触发多个请求并将数据收集在一起。我确实这样做,但是遇到了错误

这是我的代码

https://stackblitz.com/edit/angular-3jpqrc?file=src%2Fapp%2Fapp.component.ts

(此请求不适用于https http://api.mathjs.org/v4/?expr=

服务代码

getcalculation(n:number){
    const url = 'http://api.mathjs.org/v4/?expr='+n+'*'+n;
    return this.http.get(url);
  }

组件代码

ngOnInit(){
    this.showAddButton = true;

    for(let i =0;i <this.item.length;i++){
      this.allSubScription$.push(this.dataservice.getcalculation(i));
    }

    forkJoin(this.allSubScription$).subscribe((result)=>{
      console.log(result)
    },(err)=>{
      console.log(err)
    })

  }

在本地,我收到此错误

enter image description here

1 个答案:

答案 0 :(得分:0)

实施以下代码,仅将allSubScription$数组添加到forkJoin中,并通过使用订阅,响应将是每个api请求的数组。

 for(let i =0;i <this.item.length;i++){
      this.allSubScription$.push(this.dataservice.getcalculation(i));
    }

    forkJoin(
        this.allSubScription$
      ).subscribe((res) => {
        console.log(res[0]);
        console.log(res[1]);
        console.log(res[2]);
      }) 

我在运行api URL时遇到问题,我只是强制响应来模拟api响应。 demo