合并 GET 请求的 RxJS URL 数组

RxJS Array of urls to GET requests merged

我是 RxJS 的新手,想做以下事情(在 Angular 2 中):

  1. 从服务器请求一些 JSON 包含 url 数组
  2. 向每个网址发出请求
  3. 订阅所有这些请求的合并完成

目前我的方法是这样的:

    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 可观察值或承诺的函数。