Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular RxJs:分别发出序列的每个值_Angular_Typescript_Rxjs_Observable - Fatal编程技术网

Angular RxJs:分别发出序列的每个值

Angular RxJs:分别发出序列的每个值,angular,typescript,rxjs,observable,Angular,Typescript,Rxjs,Observable,RxJs、Typescript 1.8和Angular2 我有一个函数,它返回一个可观察的。Observable调用web API,该API返回一系列对象。这是我的实际代码: getClients(): Observable<IClient[]> { return this.backendService.get(`tracker/clients`) .map((resp: {}[]) => { return _.map(resp, createClien

RxJs、Typescript 1.8和Angular2

我有一个函数,它返回一个可观察的。Observable调用web API,该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;
      });
  }
这一切都有效。然而,我的可观测物体只发射一次——由N个元素组成的序列。如果web API返回20个项目的序列,则只有1个事件将发送到
loadClients()

如何使序列中的每个项都由自身发出,而不是一次发出整个序列

在我程序的某些部分,我需要整个序列。在其他情况下,我需要寻找一个符合某些条件的特定元素。

试试这个

this.getClients().flatMap(clients => Observable.from(clients)).subscribe(client => {
   // do something with client
})
试试这个

this.getClients().flatMap(clients => Observable.from(clients)).subscribe(client => {
   // do something with client
})

这会导致
可观察的
还是
可观察的
?我这样问是因为我尝试了一些类似的方法,但它导致了可观察的可观察,这很难处理。只要做
flatMap(clients=>clients)
我最终选择了
flatMap(clients=>clients)
,而不是
可观察。从(…)
@John,如果使用
map
而不是
flatMap
a.k.a
concatMap
,则会产生嵌套的可观察性。它具有将内部可观察值调整为数值的能力,这将导致
可观察
可观察
?我这样问是因为我尝试了一些类似的方法,但它导致了可观察的可观察,这很难处理。只要做
flatMap(clients=>clients)
我最终选择了
flatMap(clients=>clients)
,而不是
可观察。从(…)
@John,如果使用
map
而不是
flatMap
a.k.a
concatMap
,则会产生嵌套的可观察性。它能够将内部可观测值调整为值这一点很值得了解,但在我的用例中,我实现了一个函数
getEachClient()
,它应该自己发出每个
IClient
。使用
开关
将(似乎)导致每个
IClient
以其自身的1元素顺序发出。使用
flatMap
似乎更适合我的用例。了解这一点很好,但在我的用例中,我正在实现一个函数
getEachClient()
,它应该自己发出每个
IClient
。使用
开关
将(似乎)导致每个
IClient
以其自身的1元素顺序发出。使用
flatMap
似乎更适合我的用例。
this.getClients().switch(v => v).subscribe(clients => {
  // your original code 
});