在循环中请求 http.post 在 Angular 中不起作用

requesting http.post in a loop not working in Angular

我有以下代码请求 http.post 在 100 个元素的循环中,但仅将数据保存在数据库中的前一个或两个记录,其余的会出现内部服务器错误。

post(data: any): Observable<any> {
    return this.http.post(myUrl, data);
  }

myMethod() {
  for (let i = 0; i < this.myJSON.length; i++) { // 100 elements
    // Some Business Logic and changing myForm values
    this.post(this.myForm.value).subscribe( dd => { this.saved++; });
  }
}

我试过了,但没有成功。

setTimeout(() => {
          this.post(this.myForm.value).subscribe( dd => { this.saved++; });
        }, 1000);

我的环境是Asp.Net Core 2.2Angular8。 C# 方法是 async

如何 post 循环中的所有 100 个元素?

处理多个请求的最佳方式是使用 rxjs 的 forkJoin。 forkJoin 接受一个 Observable 数组的输入,然后它 returns 在每个请求完成时响应。 在这种情况下:

 post(data: any): Observable<any> {
    return this.http.post(myUrl, data);
  }

  myMethod() {
    let callsToPerform: Observable<any>[] = [];
    for (let i = 0; i < this.myJSON.length; i++) { // 100 elements
      // Some Business Logic and changing myForm values
      callsToPerform.push(this.post(this.myForm.value));
    }

    forkJoin(callsToPerform)
      .subscribe(arrayOfResults => {
        // some operations
      })
  }

内部服务器错误是服务器错误。我会考虑提出一个请求并在服务器端执行所有元素的保存