这可能是一种方法:
getProductandPriceByQuery(query: string): Observable<Product[]> { 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); }) ) }
对于每个产品,我查询价格,并将价格合并到产品中:
map(price => Object.assign(product, {price: price}))
我使用combineLatest在返回所有内容之前等待返回所有价格。