我正在开发一个带有 angular 2 的搜索引擎。 因此,我使用来自多个平台的 API。
如果我从每个 api 服务手动调用搜索功能,它就会工作。
但是可以为每个 api 服务做同样的事情吗?
每个 api 服务都具有相同的功能:
search (query: string): Observable<Array<SearchResult>> { ... }
在 UI 中,我想用制表符分隔结果。
因此每个 api 服务都有一个标题:
public title: string = "the title";
为了在本地存储搜索结果,我有一个由每个 api 服务扩展的类。这个类有辅助函数等。
最佳答案
根据您需要的行为,您可以使用merge、concat 或forkJoin 将多个流合并为一个。
代码看起来几乎一样。
例如,使用 merge 将 2 个流合并为一个。
如果您有一个 API 列表,您需要调用它来进行搜索。您的代码将如下所示。
let apis: string[] = [];
let observables = apis.map(api => search(api)); // get an array of observables
let merged = observables.reduce((previous, current) => previous.merge(current), new EmptyObservable()); // merge all obserbable in the list into one.
merged.subscribe(res => doSomething(res));
这篇文章可能是helpful .
关于api - 如何搜索多个api服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43779193/