我有一个对像这样的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 ))