有没有办法在AngularJS 2中结合承诺?例如,在Angular 1中,我将使用$q.all
多个请求组合成单个promise.Angular 2有等价物吗?
http模块的工作方式与Observables不同,它与promises不同,但你可以同时进行链接和并行调用.
链接可以使用flatMap完成,并行调用可以使用forkJoin处理.
例子:
//dependent calls (chaining) this.http.get('./customer.json').map((res: Response) => { this.customer = res.json(); return this.customer; }) .flatMap((customer) => this.http.get(customer.contractUrl)).map((res: Response) => res.json()) .subscribe(res => this.contract = res); //parallel import {Observable} from 'rxjs/Observable'; Observable.forkJoin( this.http.get('./friends.json').map((res: Response) => res.json()), this.http.get('./customer.json').map((res: Response) => res.json()) ).subscribe(res => this.combined = {friends:res[0].friends, customer:res[1]});
您可以在此处找到更多详细信息和演示:
http://www.syntaxsuccess.com/viewarticle/angular-2.0-and-http
您也可以调用toPromise()
Observable并将其转换为常规承诺.