合并 GET 请求的 RxJS URL 数组
RxJS Array of urls to GET requests merged
我是 RxJS 的新手,想做以下事情(在 Angular 2 中):
- 从服务器请求一些 JSON 包含 url 数组
- 向每个网址发出请求
- 订阅所有这些请求的合并完成
目前我的方法是这样的:
load():void {
this.http.get(SVG_LIST)
.map(res => {
return <Array<string>> res.json().files;
})
.catch(this.handleError);
}
我将什么链接到 map
方法?
您正在寻找 Promise.all
的等效项,即运算符 forkJoin
。你可以尝试类似的东西:
load():void {
this.http.get(SVG_LIST)
.map(res => {
return <Array<string>> res.json().files;
})
.flatMap(files => Rx.Observable.forkJoin(files.map(makeRequest)))
.catch(this.handleError);
}
其中 files
是 url 的数组,makeRequest
是一个接受 url 和 returns 可观察值或承诺的函数。
我是 RxJS 的新手,想做以下事情(在 Angular 2 中):
- 从服务器请求一些 JSON 包含 url 数组
- 向每个网址发出请求
- 订阅所有这些请求的合并完成
目前我的方法是这样的:
load():void {
this.http.get(SVG_LIST)
.map(res => {
return <Array<string>> res.json().files;
})
.catch(this.handleError);
}
我将什么链接到 map
方法?
您正在寻找 Promise.all
的等效项,即运算符 forkJoin
。你可以尝试类似的东西:
load():void {
this.http.get(SVG_LIST)
.map(res => {
return <Array<string>> res.json().files;
})
.flatMap(files => Rx.Observable.forkJoin(files.map(makeRequest)))
.catch(this.handleError);
}
其中 files
是 url 的数组,makeRequest
是一个接受 url 和 returns 可观察值或承诺的函数。