这可能是一种方法:
getProductandPriceByQuery(query: string): Observable{
return this.productService.getProductListByQuery( query ).pipe(
switchMap(products => {
const productWithPriceObservables = products.map(product => {
return this.productService.getPriceBySku( product.sku )
.pipe(
map(price => Object.assign(product, {price: price}))
);
});
return combineLatest(productWithPriceObservables);
})
)
}
</code>
首先,我得到了产品。
然后我使用“switchMap”来表示我将跳转到一个新的observable。 “mergeMap”也是一个有效的选项,具体取决于您的用例。
对于每个产品,我查询价格,并将价格合并到产品中:
map(price => Object.assign(product, {price: price}))
</code>
</pre>
</LI>
<LI>
<P>
我使用combineLatest在返回所有内容之前等待返回所有价格。
</p>
</LI>
</醇>