我有一个 typescript 数组 this.products
我需要遍历数组的元素,并为每个元素将参数发送到 Angular 服务,该服务进行 API 调用并作为 Observable 获取对客户端的答复。但是,由于 Observable 的异步特性,我的循环在所有答案从服务器发回之前就结束了。
这是我的代码:
this.products.forEeach((ele, idx) => {
this.myService.getSomeDetails(ele.prop1, ele.prop2).subscribe(result => {
// do something with result
});
});
我需要循环仅在每个可观察订阅完成后才前进。我该如何实现?谢谢。
最佳答案
你要找的是forkJoin:
https://rxjs-dev.firebaseapp.com/api/index/function/forkJoin
将项目数组映射到 api 调用可观察对象数组,并将它们传递到 forkJoin。这将发出所有已解析的 api 调用的数组。
快速而肮脏的例子:
forkJoin(this.products.map(i => this.myService.getSomeDetails(ele.prop1, ele.prop2))).subscribe(arrayOfApiCallResults => {
// get results from arrayOfApiCallResults
})
关于javascript - 异步循环 typescript 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53866071/