我有一个HTTP服务,可以接收需要由多个其他API使用的响应.我想并行执行这些API调用.此外,我不想等待所有API完成执行;相反,我想在收到每个API的响应后立即对其进行处理.
这是我试图实现的目标:
- 我的主要HTTP服务收到响应.
- 此响应需要传递给多个其他API.
- 这些API应该并行调用.
- 一旦一个API响应,我就会立即处理其数据,而无需等待其他API.
search(metaInfo: Interface1, searchDetails: Interface2) {
return this.http.post<Interface3>(API_ROUTES.history, metaInfo)
.pipe(
switchMap((res) => {
return combineLatest([
this.http.post<any>(API_ROUTES.searchOne, {...searchDetails, requestId: res.requestId}),
this.http.post<any>(API_ROUTES.searchTwo, {...searchDetails, requestId: res.requestId})
])
})
)
}
是否有任何rxjs
操作员可以代替combineLatest
或forkJoin
,以便我可以在响应到达时订阅响应,而不必等待两个请求都完成.
附:第一个API执行时间1秒,第二个API执行时间30-40秒,因此不能等待两个API完成执行