2015-12-15 38 views
7
eş zamanlı çoklu HTTP kaynakları alınıyor

Aşağıdaki kod ile http.get tek bir gözlenebilir sonucu işleyebilir: ArtıkAngular2

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

ben talebini göndermek mümkün istiyorum var list:number[] = [1, 4, 7]; gibi kaynak kimlikleri listesi var Tüm kaynakları ve tüm çözümlenmiş öğeleri customers => this.customers = customers gibi dizime ata.

+1

Kontrol [forkJoin] (https: // github .com/Reaktif Eklentiler/RxJS/blob/master/doc/api/çekirdek/operatörler/forkjoin.md) –

+0

teşekkürler @EricMartinez, bu çözüldü. –

cevap

9

Rx.Observable.forkJoin bunu yapabilir.

İlk ithalat Obserable & forkJoin:

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

veya tüm

import {Observable} from 'rxjs/Rx'; 

Şimdi forkJoin tüm gözlenebilirleri katılmak içe:

// 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

Harika cevap! Burada detaylı bir açıklama var http://www.metaltoad.com/blog/angular-2-http-observables – Harry