【发布时间】:2019-09-19 07:34:20
【问题描述】:
使用传统的可观察/订阅模式,我试图获取客户列表,每个客户都会使用 client.id 获取他们的帐户列表
看起来是这样的:
this.httpService.getClients().subscribe(clients => {
clients.forEach(client => {
this.httpService.getClientAccount(client.id).subscribe(accounts => {
console.log(accounts);
});
});
});
现在我正在尝试使用mergeMap 来做到这一点。我认为我做的不正确,因为当我将 client.id 传递给第二个调用时,它显示为未定义。
this.httpService.getClients().pipe(
mergeMap(client => this.httpService.getClientAccount(client.id))
).subscribe(result => console.log(result))
谁能指出我在这里做错了什么?我尝试使用 tap() 在 mergeMap 中对客户端进行控制台记录,但没有显示任何内容。我不确定如何引用第一个 getClients() 调用的响应。
【问题讨论】:
-
源 Observable 发出的对象仍然是一个客户端列表。
-
是的,我如何分别获得每个?我只是以第一种方式使用 forEach,但是如何使用 mergeMap 呢?
-
可能会考虑使用forkJoin 代替该场景。
-
@ChrisW。我仍然需要知道如何在上面的示例中使用它...
-
@TimKlein 没有在上面标记你
标签: javascript angular angular6 observable