angular - RxJS 可观察合并
问题描述
假设我有一个带有两个可能的 GET 请求的 REST 服务器。
一个像这样: /allItems
另一个:/{itemId}/picture
。
第一个将我服务器上的所有存储项目作为一个数组(仅一次)返回,其中每个都有一个 Id。
对于他们每个人,我想请求他们各自的图片并将其与他们匹配。
像这样的东西:
this.http.get('/allItems').map(itemArray => {
itemArray.forEach(item => {
this.http.get('/' + item.id + '/picture')
.subscribe(pic => item.pic = pic)
return itemArray
}
})
最后,我想返回一个Observable,它发出 item-array 并映射了它们各自的图片,以便其他函数可以访问完整的数据。
可能值得一提:我正在使用 Angular/Typescript。
解决方案
@emkay 我重构了你的代码。我认为它看起来更好。@mortom123 想要替换关键图片的对象值。
this.http.get('/allItems')
.pipe(
.mergeMap((itemArray) => from(itemArray))
.mergeMap((item) => this.http.get(`/${item.id}/picture`))
.pipe(
map((picture) => (
{
...item,
pic: picture
})
).subscribe((data) => console.log(data));
推荐阅读
- jmeter - 解析异常 - jMeter json 后处理器;在提取json响应的最后一个元素时
- keras - Keras 损失函数的季节性
- c# - asp.net 核心中的 csp-report 端点
- plotly.js - hoverinfo 在 plotly 中无法使用 hovertemplate
- java - 如何在 Java 中修复 mediawiki-api 上的“readapidenied”错误
- java - java - 如何在带有java StAX条件的结束标签之前创建新标签?
- sas - 在 SAS 中创建数据集,n+1 是做什么的?
- ios - 如何在 iOS 应用中显示 iframe
- office-js - 基于 Web 的 Outlook 插件支持的事件列表
- vb.net - 在 datagridview 列上设置 AutoCompleteStringCollection 后计算机挂起