RxJS / Angular 2 - Split Observable Array

时间:2016-06-02 09:26:19

标签: javascript arrays angular rxjs observable

我正在请求一个API,它给了我一个数组。 现在我想将这个数组拆分成它的组件,这样我们就可以利用例如Observables的“take”功能。

我正在使用Angular 2 / RxJS。

我目前的工作代码是:

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)
        );
    });
}

有没有办法摆脱外部的Observable并只使用内部observable上的方法来分割数组?

谢谢&amp;招呼

多米尼克

1 个答案:

答案 0 :(得分:1)

假设您的API返回一个解析为数组的promise,您可以使用简单的concatMap。例如(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)
  });
}