如何解决RxJS从mergeMap返回值的数组
我有一个可观察的流。第一个运算符是mergeMap,它返回一个可观察值数组。然后,我必须有第二个mergeMap才能从第一个mergeMap的返回中获取最终值。我觉得第二个mergeMap应该没有必要,但是找不到解决方法。
示例:
dpkg -i xxx_1.deb
这最终就是我所拥有的。第二个mergeMap仅用于订阅第一个的mergeMap。没有它,我的输出是可观察的(即source$.pipe(
mergeMap(() => [of(1),of(2),of(3)]),mergeMap((val) => val)
)
而不是实际值1)。有第二种mergeMap可以解决吗?
解决方法
您可以在mergeMap
运算符中使用merge函数,将Observable数组内的所有Observable合并为一个可观察的对象,当任何基础Observable发出时,该Observable就会发出。
此代码段为:
source$.pipe(
mergeMap(() => merge(...[of(1),of(2),of(3)])),)
,
原因是第一个self.mu_
应用于数组,无论数组如何。
换句话说
mergeMap
先发射source$.pipe(
mergeMap(() => ['a','b','c']),)
然后发射a
然后发射b
,然后完成。
因此,在您的情况下,您需要第二个c
来平整发出的Observable。
作为一种替代方法,如果在您的情况下有意义,则可以使用mergeMap
而不是forkJoin
。像这样
mergeMap
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。