【发布时间】:2021-03-25 08:03:57
【问题描述】:
我有以下代码,而且,在我的一生中,无法弄清楚为什么请求不会同时执行。我对 RxJS 和 observables 还是很陌生,因此对于改进以下代码的任何帮助也将不胜感激。基本上,我在后端调用 REST API 以获取一些数据。然后,对于该数据数组中的每个元素,我正在向不同的端点发出另一个请求(因此使用“forkJoin”运算符)。所有请求都是一次发送的,但它们似乎仍然是一个接一个地执行,而不是同时执行。
this.sites$.subscribe(data => {
// data.forEach(element => {
// this.siteCaptureMap[element.id] = new CaptureData();
// this.sitesService.getCaptureData(element.nameOrNumber, element.owner.name).subscribe(data => {
// this.siteCaptureMap[element.id].count = data.length;
// });
// });
var obs: Observable<any>[] = [];
for (var _i = 0; _i < data.length; _i++) {
this.siteCaptureMap[data[_i].id] = new CaptureData();
this.siteCaptureMap[data[_i].id].id = _i;
obs.push(this.sitesService.getCaptureData(data[_i].nameOrNumber, data[_i].owner.name));
}
forkJoin(obs).subscribe(results => {
for (var _i = 0; _i < results.length; _i++) {
this.siteCaptureMap[data[_i].id].count = results[_i].length;
}
});
this.dataSource.data = data;
this.dataSource.filteredData = data;
});
再次,我们将不胜感激任何帮助。如果我需要澄清任何事情或提供任何其他代码 sn-ps,请告诉我!谢谢!
【问题讨论】:
标签: javascript angular typescript rxjs rxjs-observables