在循环中请求 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.2
和Angular8
。 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
})
}
内部服务器错误是服务器错误。我会考虑提出一个请求并在服务器端执行所有元素的保存
我有以下代码请求 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.2
和Angular8
。 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
})
}
内部服务器错误是服务器错误。我会考虑提出一个请求并在服务器端执行所有元素的保存