【发布时间】:2018-08-15 15:40:00
【问题描述】:
我有一个自动完成输入,当用户键入时,它会从多个端点获取数据,例如:
//service call to fetch data and return as single observable
getAutocompleteSuggestions() {
const subs$ = [
this.http.get(endpoint1),
this.http.get(endpoint2),
this.http.get(endpoint3)
];
return Observable.forkJoin(...subs$);
}
这些端点中的每一个都返回以下形式的数据:
{ data: [], status: xyz }
我想使用 switchmap,因为我只想显示最终调用的结果,并尝试了以下方法:
this.getAutocompleteSuggestions(query)
.switchMap(res => {
return res.data;
})
.subscribe((results: any) => {
this.results = results;
});
但是 switchmap 中的“res”是一个数组,知道结果如何包含单个数组,其中包含来自任意数量的 observable 响应的数据吗?
【问题讨论】:
-
这就是 forkJoin 所做的。它将结果组合到一个数组中。也许我不明白你的问题……你能澄清一下吗?
-
forkjoin 产生的结果是一个数组,所以我想展平该数组,对其进行转换(例如通过 map())并取消以前的请求
标签: javascript angular rxjs reactive-programming rxjs5