2015-12-15 7 views
7

posso gestire un singolo risultato osservabile da http.get con seguente codice:Ottenere più risorse HTTP contemporaneamente in Angular2

http.get('/customers/1') 
     .map((res: Response) => res.json()) 
     .subscribe(customer => this.customer = customer); 

Ora ho un elenco di ID di risorsa come var list:number[] = [1, 4, 7]; che voglio essere in grado di inviare richiesta di tutte le risorse e assegnare tutti gli elementi risolti al mio array come customers => this.customers = customers.

+1

Controllare [forkJoin] (https: // GitHub .com/Estensioni reattive/RxJS/blob/master/doc/api/core/operatori/forkjoin.md) –

+0

grazie a @EricMartinez, questo risolto. –

risposta

9

Rx.Observable.forkJoin può fare questo.

Prima di importazione Obserable & forkJoin:

import {Observable} from 'rxjs/Observable'; 
import 'rxjs/add/observable/forkJoin'; 

o importare tutti

import {Observable} from 'rxjs/Rx'; 

ora partecipare tutti osservabili con forkJoin:

// a set of customer IDs was given to retrieve 
var ids:number[] = [1, 4, 7]; 

// map them into a array of observables and forkJoin 
Observable.forkJoin(
    ids.map(
     i => this.http.get('/customers/' + i) 
      .map(res => res.json()) 
    )) 
    .subscribe(customers => this.customers = customers); 
+0

Ottima risposta! C'è una spiegazione dettagliata disponibile anche qui http://www.metaltoad.com/blog/angular-2-http-observables – Harry