2016-06-02 11 views
1

Ich bin eine API, die mir ein Array zurückgibt. Jetzt möchte ich dieses Array in seine Komponenten aufteilen, so dass wir z. die "Take" -Funktion der Observables.RxJS/Winkel 2 - Split Observable Array

Ich verwende Angular 2/RxJS.

Mein aktueller Arbeitscode lautet:

public getFiltered(groupName:string, start?:number, num?:number):Observable<AddressGroupInfo> { 
    start = start || 0; 
    num = num || 0; 

    return new Observable((observer) => { 
     this.apiClient.post('AddressGroup/GetFiltered', { 
      GroupName: groupName, 
      StartValue: start, 
      ResultCount: num 
     }).map((pagedResultOfAddressGroupInfo:PagedResultOfAddressGroupInfo) => { 
      return pagedResultOfAddressGroupInfo.ItemList; 
     }).subscribe(
      (itemList) => { 
       for (let item of itemList) { 
        observer.next(item); 
       } 
       observer.complete(); 
      }, 
      (error) => observer.error(error) 
     ); 
    }); 
} 

Gibt es eine Möglichkeit des äußeren beobachtbare loszuwerden und nur eine Methode auf dem inneren beobachtbaren verwendet das Array zu spalten?

dank &

Dominik

Antwort

1

Gesetzt Ihre API begrüßt ein Versprechen gibt, die in einem Array löst, könnten Sie eine einfache concatMap verwenden. Zum Beispiel (jsfiddle):

public getFiltered(groupName:string, start?:number, num?:number):Observable<AddressGroupInfo> { 
start = start || 0; 
num = num || 0; 

return Rx.Observable.from(this.apiClient.post('AddressGroup/GetFiltered', { 
     GroupName: groupName, 
     StartValue: start, 
     ResultCount: num 
    })).concatMap(x => x) 
    }); 
} 
+0

perfekt. Du bist mein Held ;) –