【发布时间】:2019-11-05 18:27:48
【问题描述】:
我是 rxjs 的新手,在阅读了大量文章后,我感到有些困惑。 我有很多嵌套的 http 请求,它们从 API 中获取数据。 第一个请求获取我的设备列表,每个设备都包含一个传感器列表,每个传感器都包含一个温度列表。 第一个 API 请求返回已填充传感器数组的设备列表,但温度数组为空。此时,我必须为每个传感器执行一个 http 请求以获取温度数据。
我尝试将 switchmap 与 forkJoin 结合使用,但在可观察订阅中,我仅获得温度数组。 如何填充每个传感器的温度数组?
APIconnector.GetDevices()
.pipe(
tap(devices => {console.log(devices)}),
switchMap(devices => forkJoin(devices.map(device => device.Sensors))),
tap(sensors => {console.log(sensors)}),
switchMap(sensors => forkJoin(sensors.map(sensor => {
const param = {
MinutesInterval: 30,
StartDate: stDate,
EndDate: new Date(),
SensorIds: [sensor.Id]
};
return APIconnector.GetIntervalRange(param);
})))
).subscribe(data => {
console.log(data);
})
我需要 API 返回的所有数据,而不仅仅是最后一个。
-- 更新--
我希望这个 stackblitz 草图可以帮助到你。
【问题讨论】:
-
如果您可以添加带有虚拟数据的堆栈闪电战,那就太好了