2016-05-11 7 views
18

gibt es sowas wie q.all um alle http api Anfragen in angular2 aufzulösen?q.all für angular2 observables

In angular1, ich kann etwas tun:

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

In angular2, der http-Modul beobachtbare zurückkehrt,

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

Aber ich will A und B gemeinsam lösen, dann etwas tun .

Antwort

27

Sie müssen den .forkJoin Operator für die

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

Sie die Observable importieren können;

import {Observable} from 'rxjs/Rx'; 
+1

Kennen Sie auch RXJS-Lösung für die andere Variante von $ q.all() Aufruf, wo Sie ein Objekt und nicht ein Array übergeben können? Es ist eleganter Ansatz, weil Sie Versprechungen später nach Namen und nicht nach Index richten können. –

+1

@ ŁukaszBachman Ich würde das gerne als Antwort sehen :-) – echonax