[英]NestJS HttpService Call Multiple Endpoints Simultaneously
我正在使用 NestJS HttpModule
为一个端点发出 GET 请求。 代码有点像这样:
@Injectable
export class AnimalService {
constructor(private httpService: HttpService){}
getAnimalData(variant: string): Observable<AxiosResponse<Animal>> {
return this.httpService
.get(`http://animal.test/${variant}`)
.pipe(map((response) => response.data));
}
}
现在我想创建一个同时调用多个端点的方法。
getAllAnimalsData() {
// const variants = ['birds', 'cats', 'dogs'];
// call
// http://animal.test/birds
// http://animal.test/cats
// http://animal.test/dogs
// simultaneously
// and process the response data
}
如何使用 NestJS HttpModule
实现这一点? 我如何处理每个结果? 如果出现部分错误(例如 3 个请求中的 1 个有错误),我该如何处理?
如果你想同时发出多个 http 请求,你可以使用 RxJS forkJoin
操作符。 我还为每个 Observable 添加了一个catchError
以便任何错误都将传递给订阅回调。 当所有 Observable 完成时,订阅回调会触发。
getAllAnimalsData() {
const variants = ['birds', 'cats', 'dogs'];
forkJoin(
variants.map(v =>
getAnimalData(v).pipe(catchError(e => of(e)))
)
)
.subscribe(([r1, r2, r3]) => /* ... */)
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.