2015-12-15 10 views
7
में समवर्ती एकाधिक HTTP संसाधनों हो रही

मैं निम्नलिखित कोड के साथ http.get से एक भी नमूदार परिणाम संभाल कर सकते हैं:Angular2

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

अब मैं var list:number[] = [1, 4, 7]; की तरह संसाधन आईडी है कि मैं के लिए अनुरोध भेजने के लिए सक्षम होना चाहते हैं की एक सूची है सभी संसाधन और सभी सरलीकृत वस्तुओं को मेरी सरणी में customers => this.customers = customers असाइन करें।

+1

चेक [forkJoin] (https: // GitHub .com/प्रतिक्रियाशील-एक्सटेंशन/आरएक्सजेएस/ब्लॉब/मास्टर/डॉक्टर/एपीआई/कोर/ऑपरेटर/forkjoin.md) –

+0

धन्यवाद @EricMartinez, यह हल हो गया। –

उत्तर

9

Rx.Observable.forkJoin ऐसा कर सकते हैं।

पहले आयात Obserable & forkJoin:

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

या आयात सभी

import {Observable} from 'rxjs/Rx'; 

अब forkJoin के साथ सभी observables में शामिल होने:

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

महान जवाब! यहां एक विस्तृत स्पष्टीकरण भी उपलब्ध है http://www.metaltoad.com/blog/angular-2-http-observables – Harry