如何让执行等待forkJoin结果

dst*_*str 7 rxjs typescript angular

如何让以下代码等待forkJoin执行以便我可以返回结果bulkRequest

  constructor(private http: Http) {
    let results = this.bulkRequest(this.get("https://jsonplaceholder.typicode.com/posts/1"),
      this.get("https://jsonplaceholder.typicode.com/posts/1"),
      this.get("https://jsonplaceholder.typicode.com/posts/1"));

    console.log("results");
  }

  get(url: string): Observable<any> {
    return this.http.get(url).map(response => response.json());
  }

  bulkRequest(...sources: SubscribableOrPromise<any>[]): any[] {
    let results: any[];

    Observable.forkJoin(
        sources
    ).subscribe(response => {
        console.log("responses");
        results = response;
    }, error => {
      console.log("error: " + error.toString());
    },
    () => {
      console.log("finally");
    });

    return results;
  }
Run Code Online (Sandbox Code Playgroud)

目前我得到以下控制台输出,results变量是undefined

results
responses
finally
Run Code Online (Sandbox Code Playgroud)

可观察的确实会执行,如果我console.log("results")在行上放置一个断点,我会看到它们全部三个,如Pending“网络”选项卡中所示。

Plnkr:http://plnkr.co/edit/2wb72kw7S3wYUUwwwi8h ?p=preview

Gün*_*uer 3

return Observable.forkJoin( ...
Run Code Online (Sandbox Code Playgroud)

并删除

return results;
Run Code Online (Sandbox Code Playgroud)

没有办法等待 observables。您需要在调用时订阅返回的可观察对象bulkRequest()