我正在请求一个 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 上的方法来拆分数组?
谢谢和问候
多米尼克
最佳答案
假设您的 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)
});
}
关于javascript - RxJS/Angular 2 - 拆分可观察数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37587772/