2015-12-15 23 views
7

mogę obsłużyć pojedynczy wynik zauważalnego od http.get z następującego kodu:Uzyskiwanie wielu zasobów HTTP jednocześnie w Angular2

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

Teraz mam listę identyfikatorów zasobów, takich jak var list:number[] = [1, 4, 7]; że chcę być w stanie wysłać wniosek o wszystkie zasoby i przypisz wszystkie rozwiązane elementy do mojej tablicy, takie jak customers => this.customers = customers. Może to zrobić

+1

Sprawdź [forkJoin] (https: // github .com/Reactive-Extensions/RxJS/blob/master/doc/api/core/operators/forkjoin.md) –

+0

dzięki @EricMartinez, to rozwiązano. –

Odpowiedz

9

Rx.Observable.forkJoin.

Pierwszy import Obserable & forkJoin:

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

lub zaimportować wszystkie

import {Observable} from 'rxjs/Rx'; 

teraz dołączyć wszystkie obserwable z 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

Świetna odpowiedź! Tutaj znajdziesz szczegółowe wyjaśnienie http://www.metaltoad.com/blog/angular-2-http-observables – Harry