如何使用嵌套循环发出HTTP请求

实用内尔奇

在我的应用程序中,我必须在嵌套循环中发送HTTP请求,如下所示:

for(let i=1;i<Names.length;i++) {
    for(let k=1;k<Data.lenght;k++) {
        let url = hostPath + "/"+Names[i] + "/" + Data[i];
        this.http.get(url);
    }
}

我已经按照以下方法完成了上述要求:

for(let i=1;i<Names.length;i++) {
    Observable.from(Data).ConcatMap((data) => {
        let url = hostPath + "/" + Names[i] + "/" + data;
        this.http.get(url);
    }).subscribe(() => {})
}

我想就Names数组(外循环)保持适当的顺序,但可以发送对Data数组的并行请求(内循环)。我对Angle非常陌生,还有其他方法可以做到吗?

迪帕克·沙玛(Deepak Sharma)

您可以这样做,一个小问题是您需要使用处理空数组defaultIfEmpty以下代码也可以处理该问题:

let allData$ = Names.map(name => Observable.forkJoin(
    Data.map(d => {
        const url = hostPath + '/' + name + '/' + d;
        return this.http.get(url);
    })).defaultIfEmpty([]);
);

Observable.forkJoin(allData$).defaultIfEmpty([]).subscribe();  
// You will get data in same order here

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章