什么是遍历HTTP请求的最佳方法

时间:2019-08-12 20:49:27

标签: angular http promise get

我有一个需要发出的GET请求。事实是,每个请求仅返回一个包含50个数据条目的页面,因此可能存在只能用不同请求检索的多页数据。我必须等待所有数据都被抓取,以便随后可以整体处理数据

我需要做类似的事情

for(var i = 1; i <= numPages; ++i){
     this.http.get(url, httpOptions).subscribe((information: any =>{
           allInfo.push(information);
        });
}
processData(allInfo);

将用正确的页面更新url

我知道processData将在for循环完成之前执行。是否有某种方式可以合并promisethen语句,或者可以合并pipe来将所有数据推送到allInfo数组中以便随后进行处理?

1 个答案:

答案 0 :(得分:2)

一种方法是,您不必订阅所有HTTP请求,而是将可观察到的请求存储在数组中,然后使用forkJoin订阅所有请求的组合结果。

类似这样的东西:

let observaleArray: Observable[] = [];

for(var i = 1; i <= numPages; ++i){
    observableArray.push(this.http.get(url, httpOptions));
}

forkJoin(observableArray)
    .subscribe(allInfo => {
       processData(allInfo); 
    });

不要忘记导入ObservableforkJoin

希望有帮助。