q.all 对于 angular2 observables

q.all for angular2 observables

是否有类似 q.all 的东西来解决 angular2 中的所有 http api 请求?

在 angular1 中,我可以这样做:

var promises = [api.getA(),api.getB()];
$q.all(promises).then(function(response){
    // response[0]  --> A
    // response[1]  --> B
})

在angular2中,http模块returns Observable,

api.getA().subscribe(A => {A})
api.getB().subscribe(B => {B})

但是我想一起解决A和B,然后做点什么。

您将需要 .forkJoin 运算符

Observable.forkJoin([observable1,observable2])
       .subscribe((response) => {
          console.log(response[0], response[1]);
       });

您可以导入 Observable 与;

import {Observable} from 'rxjs/Rx';

Angular < 6:

import {Observable} from 'rxjs/Observable';
    ...
    return Observable.forkJoin(
        this.http.get('someurl'),
        this.http.get('someotherurl'));

Angular >= 6:

import {forkJoin} from 'rxjs';
...
return forkJoin(
    this.http.get('someurl'),
    this.http.get('someotherurl'));