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);
}