我有一个 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
以便我可以在响应到达时订阅它们,而不必等待两个请求完成。
PS:第一个 API 执行时间为 1 秒,第二个 API 执行时间为 30-40 秒,因此不能等待两个 API 完成执行