[英]How to search multiple api services
我正在開發一個角度為2的搜索引擎。因此我使用來自多個平台的API。
如果我手動調用每個api服務的搜索功能,它就有效。
但是可以做同樣的foreach api服務嗎?
每個api服務都具有相同的功能:
search (query: string): Observable<Array<SearchResult>> { ... }
在UI中,我想通過制表符分隔結果。
因此每個api服務都有一個標題:
public title: string = "the title";
為了在本地存儲搜索結果,我有一個由每個api服務擴展的類。 這個類有輔助函數等。
根據您需要的行為,您可以使用merge , concat或forkJoin將多個流合並為一個。
代碼看起來幾乎一樣。
例如,使用合並以將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));
本文可能會有所幫助 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.