在Angular中循环运行下一个服务调用之前,如何等待对控制器的每次服务调用



我有一个对像这样的Angular服务的调用

this.webService.add(id)
.subscribe(result => {
// do some stuff
}, error => {
// handle error
});
// service
add(id: number): Observable < any > {
return this.http.post(this.baseUrl + 'webservice/add/' + id, null);
}

如果我需要多次调用,但我想确保在显示最终成功/失败消息之前,所有操作都已完成,我该如何做到?

递归方法合适吗?或者有更角度的/javascript/回调方法吗?

前任。

for (let i = 0; i < someLength; i++) {
this.webService.add(id)
.subscribe(result => {
// do some stuff
}, error => {
// handle error
});
}
// now show if they all succeeded or if one failed!

我的控制器像一样异步

[HttpPost("document/{id}")]
public async Task<IActionResult> Document(int id) {
// do something
var resultDto = await _webRepo.AddToWebService(info);
return Ok(resultDto);
}

您正在寻找forkJoin运算符。

此操作符获取多个可观测值,并在所有源可观测值完成后立即返回一个新的可观测值。你会像这样使用它:

const serviceCalls = yourArray.map(id => this.webservice.add(id));
forkJoin(... serviceCalls)
.subscribe((results) => results.forEach( //do something with your results ))

最新更新