q.all for angular2 observables

kdu*_*kdu 22 combinations subscribe observable angular

有什么像q.all来解决angular2中的所有http api请求?

在angular1中,我可以这样做:

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

在angular2中,http模块返回Observable,

api.getA().subscribe(A => {A})
api.getB().subscribe(B => {B})
Run Code Online (Sandbox Code Playgroud)

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

eko*_*eko 33

你需要.forkJoin操作员

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

你可以导入Observable;

import {Observable} from 'rxjs/Rx';
Run Code Online (Sandbox Code Playgroud)

  • 您是否也知道$ q.all()调用的另一个变体的RXJS解决方案,您可以在其中传递Object而不是数组?这是更优雅的方法,因为您可以稍后通过名称而不是索引来解决承诺. (4认同)
  • @ŁukaszBachman我很乐意看到这个答案:-) (2认同)