我有一个问题,我的Angular webapp。我试图迭代数组,并作出每次HTTP请求,以获得ID的Module
,这是一个对象:{name:string, charge:string}
一旦我用新的属性id
更新了每个模块,我想用这些ID做一些事情。为此,我需要所有的ID,并且不能单独处理每个Module
。我该怎么做呢?我知道,因为Angular中的http.get()
函数是异步的,我不能简单地将我的代码粘贴到foreach()
循环之后。
下面是我的代码:
ngOnInit() {
let fit = parseFit(megafit.default.fit);
fit.modules.forEach(Module => {
this.http.get(`https://esi.tech.ccp.is/v2/search/?categories=inventory_type&search=${Module.name}&strict=true`)
.subscribe((data:any) => {
Module.id = data.inventory_type
})
});
// Do something with all the IDs
}
2条答案
按热度按时间hl0ma9xz1#
您将需要一些RxJS运算符来执行此操作。
使用from将
Module[]
转换为Observable<Module>
,然后将流通过管道传输到mergeMap并执行API请求。使用tap使用API的结果更改模块Object,最后使用toArray收集响应。订阅流以执行所有模块处理完毕后您希望执行的操作。例如:
yiytaume2#
使用承诺而非订阅者
我在手机里写了这个🤓