【问题标题】:RxJS / Angular 2 - Split Observable ArrayRxJS / Angular 2 - 拆分 Observable 数组
【发布时间】:2016-06-02 09:26:19
【问题描述】:

我正在请求一个 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 上的方法来拆分数组?

感谢和问候

多米尼克

【问题讨论】:

    标签: javascript arrays angular rxjs observable


    【解决方案1】:

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

    【讨论】:

    • 完美。你是我的英雄;)
    猜你喜欢
    • 1970-01-01
    • 2017-03-16
    • 2016-12-18
    • 1970-01-01
    • 1970-01-01
    • 2018-03-09
    • 2019-06-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多