【发布时间】:2021-08-08 07:36:55
【问题描述】:
我有两个服务调用两个独立的外部 API(productDataService、productPrice),它们返回 observables。然后我有一个名为 productService 的第三个服务,它最终需要向我的控制器返回一个 observable,这是从两个外部服务调用函数的结果。正如您将在下面看到的那样,我从一项服务(外部可观察)获取产品列表,然后需要依次调用另一个服务功能(内部可观察)来获取该产品的价格。
// Both services functions are using HttpService and returning observables.
getProductInfo() {
return this.productDataService.getProducts()
.pipe(map((prod: any) => this.productPriceService.getProductPriceById(prod.id)
.pipe(map(price => {
(
{
id: prod.created,
name: prod.amount,
price
}
)
}))))
}
以下是服务功能供参考:
// getProducts (returns an observable of an array of type product)
return this.httpService.get(url, config).pipe(map(res => res.data.list.map(item => {
return {
id: item.id,
name: item.name
}
})));
// getProductPriceById (returns an Observable of type number)
return this.httpService.get(url, config).pipe(map(res => res.data.price));
【问题讨论】:
-
当从外部 observable 转到内部 observable 时,需要使用 switchMap 或 mergeMap 来代替 map。
标签: javascript angular rxjs nestjs