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
“网络”选项卡中所示。
return Observable.forkJoin( ...
Run Code Online (Sandbox Code Playgroud)
并删除
return results;
Run Code Online (Sandbox Code Playgroud)
没有办法等待 observables。您需要在调用时订阅返回的可观察对象bulkRequest()
。