Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 如何使执行等待forkJoin结果_Angular_Typescript_Rxjs - Fatal编程技术网

Angular 如何使执行等待forkJoin结果

Angular 如何使执行等待forkJoin结果,angular,typescript,rxjs,Angular,Typescript,Rxjs,如何使以下代码等待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("ht

如何使以下代码等待
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;
  }
如果我在
console.log(“results”)
行中放置一个断点,我会在网络选项卡中看到这三个断点都是
Pending

Plnkr:

移除

return results;
没有办法等待观察到的结果。
您需要在调用
bulkRequest()
的位置订阅返回的可观察对象,而不是
结果
变量:

public bulkRequest(...sources: SubscribableOrPromise<any>[]): any[] {
  return Observable.forkJoin(sources);
}

public bulkRequest(…来源:SubscribableOrPromise

谢谢。问题是,我需要在完整的块中做一些事情((console.log(“finally”)行)我不希望每次需要调用bulkRequest时都这样做。有什么建议吗?这里有一个
finally
操作符,您可以使用它,当您提到它时,我忘记了您需要将
subscribe
更改为
map
。例如,请参阅
return results;
public bulkRequest(...sources: SubscribableOrPromise<any>[]): any[] {
  return Observable.forkJoin(sources);
}