我有一个返回车辆列表的服务。我需要获取每辆车的驱动程序,并为巴士设置它。到目前为止,我已经以这样的方式实现了它:
return this.getVehicles().pipe(
// Set the driver
map((res) => {
res.items = res.items.map((vehicle) => {
if (vehicle.driver_id !== "") {
this.driverSvc.get(vehicle.driver_id).subscribe((data) => {
vehicle.driver = data;
})
}
return vehicle;
})
return res;
}),
map((res) => {
// This map needs to have the driver!
console.log(vehicle.driver) // Undefined in all cases, where it should be set for one of the entries
})
我知道console.log(vehicle.driver)
记录undefined
是因为订阅。是否有其他方法可以根据其他服务的响应修改我的响应?
1条答案
按热度按时间rqenqsqc1#
正如我已经提到的,你需要使用
switchMap
操作符将两个可观测量组合成一个链。下面的例子可能对你有用:switchMap
允许我们使用一个新的可观察值作为返回值,zip
操作符允许我们将多个调用组合为一个返回值。