【发布时间】:2023-04-02 15:30:02
【问题描述】:
我有一个 fetchDrives 方法,它会返回一个 observable,订阅时会返回一个驱动器列表
this.fetchDrives(points).subscribe(drives => {
console.log(drives);
});
假设我订阅的驱动器阵列看起来像这样
[ {driveId: 1}, {driveId: 2}, {driveId: 3} ]
现在我需要一个一个地使用 driveId 并通过将 driveId 传递给每个 api 调用来进行三个调用(三个调用,因为驱动器数组的长度为 3)。我需要一次将一个 driveId 传递给下面的方法,并且获取 lat 和 lon 并将三个调用的结果存储在一个数组中。
this.getLatLong(driveId).subscribe( res => console.log(res))
res 将包含像{ lat: 12, lon: 54 } 这样的对象
我不想进行两次订阅,有没有一种方法可以使用 Rxjs 运算符,并使用以前的 observable 的结果通过一次订阅来实现这一点,循环遍历驱动器数组并对 getLatLong 方法进行三次调用使用mergeMap 作为调用顺序无关紧要,并将这三个调用的结果存储在一个数组中?
我尝试使用扫描运算符循环但未能使用它来获得所需的输出
提前感谢您的帮助:)
【问题讨论】:
标签: javascript angular rxjs rxjs6 rxjs-pipeable-operators