【发布时间】:2022-01-22 21:29:43
【问题描述】:
我有一个街道列表并遍历它们。在 for 循环中,我将为每条街道调用一个端点。端点为我提供了有关所请求街道的信息。我想将每个响应存储到一个对象数组中,在所有请求完成后,我想执行下一个代码块。 这是我的问题: 我进行所有调用,将所有数据存储到对象数组中,但如果我要在下一个代码块中使用我预填充的对象数组,长度 = 0... 这是我的代码:
export class MyComponent{
addressInfoArray: AddressInfo[] = [];
// some code ...
prepareStreetInformations(): void {
// some code ....
this.fillArray(streets, url);
this.doSomethingWithArray(this.addressInfoArray); // <--- length = 0 and doesn't waits for finishing the fillArray() method
}
}
fillArray(streets: Street[], url: string): void { // streets has a length of 150
for (const street of streets) {
this.http.get<AddressInfo>(`${url}/street.name`).subscribe(response => {
this.addressInfoArray.push(response);
});
}
}
所以我的问题是:如何等待 doSomethingWithArray() 方法完全完成 fillArray() 方法,为什么 doSomethingWithArray() 方法看不到我的对象数组已全部填充?
【问题讨论】:
-
这能回答你的问题吗? How to 'wait' for two observables in RxJS
标签: angular typescript asynchronous rxjs race-condition