2015-12-15 13 views
7

tôi có thể xử lý một kết quả quan sát được duy nhất từ ​​http.get với đoạn mã sau:Bắt nhiều nguồn HTTP đồng thời trong Angular2

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

Bây giờ tôi có một danh sách các ID tài nguyên như var list:number[] = [1, 4, 7]; mà tôi muốn để có thể gửi yêu cầu cho tất cả tài nguyên và gán tất cả các mục đã giải quyết cho mảng của tôi như customers => this.customers = customers.

+1

Kiểm tra [forkJoin] (https: // github .com/Phần mở rộng phản ứng/RxJS/blob/master/doc/api/core/toán tử/forkjoin.md) –

+0

cảm ơn @EricMartinez, điều này đã được giải quyết. –

Trả lời

9

Rx.Observable.forkJoin có thể thực hiện việc này.

đầu tiên nhập khẩu Obserable & forkJoin:

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

hoặc nhập khẩu tất cả các

import {Observable} from 'rxjs/Rx'; 

Bây giờ tham gia tất cả các quan sát với 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

Câu trả lời hay! Có một lời giải thích chi tiết có sẵn ở đây quá http://www.metaltoad.com/blog/angular-2-http-observables – Harry

Các vấn đề liên quan