如何在Observable.forkJoin()中使用动态参数(URL)

bor*_*net 3 rxjs angular

所以我喜欢forkJoin,基本上是Promise.all的替代品,但是我不知道如何向它提供动态列表,如下所示:

Observable.forkJoin(
        this.http.get('/app/books.json').map((res:Response) => res.json()),
        this.http.get('/app/movies.json').map((res:Response) => res.json())
    ).subscribe(
      data => {
        this.books = data[0]
        this.movies = data[1]
      },
      err => console.error(err)
    );
Run Code Online (Sandbox Code Playgroud)

只是我需要在运行时创建http.gets(URL将不同,目标和生成的URL都是动态的),试图传递配置对象,但它不喜欢它。

阅读的TX,

肖恩

Abd*_*yer 6

forkJoin将第一个参数用作

args(Arguments | Array):可观察序列或Promise的数组或自变量,用于收集最后一个元素。

因此,您可以简单地将其传递给一系列observables。这是一个矮人

let observables = [
  this.http.get('/app/books.json').map((res:Response) => res.json()),
  this.http.get('/app/movies.json').map((res:Response) => res.json())
];

Observable.forkJoin(observables).subscribe(
   data => {
        this.books = data[0]
        this.movies = data[1]
   },
   err => console.error(err)
);
Run Code Online (Sandbox Code Playgroud)