合并两个不同类型的可观察对象

时间:2018-05-24 11:37:21

标签: angular typescript rxjs

我有以下功能:

  getNetworkByName(prefix: string): Observable<Network[]> {
return this.http.get<Network[]>(this.Url + '/networks/search?name-prefix=' + prefix)
  .catch(handleError); }

getNetwork(id: number): Observable<Network> {
return this.http.get<Network>(this.Url + '/networks/' + id)
  .catch(handleError); }

我想有另一个功能,如 getNetworkByNameAndId(prefix: string | number): observable<network[]>合并前一个函数的结果。我尝试过合并运算符但由于不同的类型而无效。

如果不订阅这些功能,如何有效地解决这个问题。我需要在前端解决这个问题。在某些情况下,我的网络名称可能是1&amp; 1,网络ID也可能在内部1,所以我想根据名称和ID执行搜索。我做了这样的事情:

return this.getNetworkByName(prefix.toString()).pipe(merge(this.getNetwork(parseInt(prefix,10))); 

我收到错误

Type 'Observable<Network | Network[]>' is not assignable to type 'Observable<Network[]>'.

此致

1 个答案:

答案 0 :(得分:1)

也许是这样的:

getNetworkByNameAndId(name : string, id : number): Observable<Network[]> {
    return Observable.forkJoin(
        getNetworkByName(name),
        getNetwork(id)
    ).map(([a, b]) => [...a, b]);
}