RxJs,Typescript 1.8和Angular2。RxJs:分别发出序列的每个值
我有一个函数返回一个Observable。 Observable调用一个web API,它返回一系列对象。这里是我的实际代码:
getClients(): Observable<IClient[]> {
return this.backendService.get(`tracker/clients`)
.map((resp: {}[]) => { return _.map(resp, createClientFromJson)})
.map((clients: IClient[]) => {
this.logger.debug(`Created ${clients.length} Clients from reply`);
return clients;
});
}
到backendService.get()
调用最终调用http.get()
,它返回一个Observable
。
而且我的代码消耗从可观察的事件:
loadClients() {
this.getClients().subscribe((clients: IClient[]): void => {
this.clients = this.clients.concat(clients);
this.logger.debug(`Got ${clients.length} clients, now have ${this.clients.length}.`);
})
}
这一切工作。然而,我的Observable发出一个单一的时间 - 有N个元素的序列。如果Web API返回20个项目的序列,则只有1个事件将发送到。
我该如何做到让序列中的每个项目都是自己发射,而不是一次发射整个序列?
在我的程序的某些部分,我需要整个序列。在其他人中,我需要寻找符合某些标准的特定元素。
这个结果在'可观察'或一个'可观察<可观察>'?我问,因为我沿着这些路线尝试了一些东西,但它导致了可观察到的可观察的情况,这很难处理。 –
只要做'flatMap(clients => clients)' –
我最终用'flatMap(clients => clients)',而不是'Observable.from(...)' –