arrays - 如何将数组的 Array Observavble 合并到只有一个数组的 Observable 与 RXJS?
问题描述
我想并行执行x请求并将数组的数组Observavble合并到只有一个数组的Observable与RXJS?
public getMetrics(url: string): Observable<GenericMetric[]> {
const ox: Observable<GenericMetric[]>[] = [];
res.forEach(elem => {
ox.push(this.http.get<GenericMetric[]>(url));
});
return forkJoin(...ox);
}
我尝试:
return forkJoin(...ox); // return array of GenericMetric[] but I want all results in GenericMetric[]
我正在寻找如何将我的数组结果合并为一个数组
return forkJoin(ox).pipe(?????);
编辑:
我尝试:
return forkJoin(...ox).pipe(tap(d => console.log(d) ));
我的结果是:
[
[{a:1}, {a:2}, {a:3}],
[{a:4}, {a:5}]
]
但我想要 :
[{a:1}, {a:2}, {a:3}, {a:4}, {a:5}]
解决方案
这是一个关于如何实现预期结果的演示。您可以使用 ES6 的扩展语法将数组展平为数组。
const arr = [
[{a:1}, {a:2}, {a:3}],
[{a:4}, {a:5}]
];
const res = [];
arr.map(item => {
res.push(...item)
})
console.log(res)
forkJoin(ox)
将返回一个 observable 类型Observable<GenericMetric[]>[]
,这意味着它是一个GenericMetric[]
. GenericMetric[]
您无法将其简化为 GenericMetric ( )数组。
但是,您仍然可以forkJoin(ox)
通过使用可管道操作符(例如map,
forkJoin(ox)
.pipe(
map(res => {
const result = [];
res.map(elem => {
res.push(...elem)
});
return result;
}),
).subscribe(res => {
console.log(res);
// do the rest
})
推荐阅读
- php - 使用 OpenSSL 的 EC 公钥加密
- reactjs - AgGrid 未填充所有列
- java - 使用 Quarkus 反应式 MySQL 客户端 / io.vertx.mysqlclient 的服务器故障转移
- android - kotlin协程超过一定时间怎么取消?
- python - 同时在屏幕上叠加绘图和更多绘图
- c# - 正则表达式获取第 n 个值,用斜杠分隔
- swiftui - ObservedObject 未触发视图重绘
- android - gson.toJson() 在 android 8 及更低版本的设备中不起作用
- xamarin.forms - 在移动设备上离线渲染 Autodesk forge 查看器会在 android 上的 chrome 浏览器上冻结
- r - R - 根据另一个矩阵索引更改矩阵值