【发布时间】:2019-04-05 02:23:37
【问题描述】:
所以我试图围绕 Observables 进行思考,并且在大多数情况下它们是有意义的——但所有文档都假设你实际上是在处理数据流——并且 Angular 使每个 http 调用都默认为 observable ,即使这些不是流,而是返回的隔离值,这给我造成了一些混乱。
所以,我进行了一个 http 调用,它返回一个对象数组。然后我需要映射该数组,并根据每个对象中的键生成一个新的 http 调用。然后我需要收集来自这些调用的所有响应,并映射初始数组以根据来自第二个调用数组的响应设置属性。
请原谅 Sudo 代码
this._http.get<>(url).subscribe(value => myData = value);
返回一个类似的数组
[
{ clientId: 1, ..additional properties},
{ clientId: 2, ..additional properties},
]
然后我需要映射它并像这样生成新的 http 调用
response.map(item => {
this._http.get(`someurl/${item.clientId})
}
然后我需要将所有这些调用组合成一个数据块,这样我就可以做类似的事情
myData.map(item => {
item.fullClient = ArrayOfClientReturns.find(client => client.id === item.clientId);
}
我的问题是我完全理解如何使用 Promise 来做到这一点,但是对于 observables,我真的不确定。我了解如何使用 pipe(map()) 来组合可观察对象,但我不明白如何映射数据数组并根据初始可观察对象的响应生成可观察对象集合,然后等待它们全部解决,然后像这样重新映射初始数据集。
我确定我只是在 rxjs 文档中遗漏了正确的方法,但每个示例都显示了在您尝试组合它们之前组合已经存在的可观察对象。
如果有人能指出我正确的方向,我将不胜感激。
【问题讨论】: