我正试图了解RxJS。特别是,我遇到一种情况,即我试图通过具有内部可观察谓词的过滤器来管道来自外部可观察量的排放,该过滤器依赖于外部可观察量的输出。举例来说:
outerObs.pipe(
filter(x => myPredicate(x))
).subcribe()
其中mypredicate
是一个返回Observable<boolean>
的函数。显然,上述内容不起作用,因为filter
运算符期望boolean
而不是Observable<boolean>
。有没有一种很好的管道方法可以做到这一点?我尝试查看withLatestFrom
和mergeMap
运算符,但似乎没有任何效果。
您需要使用*Map
运算符之一:mergeMap
、exhaustMap
、switchMap
或concatMap
下面是一个concatMap
示例,它将保证初始发射顺序:
outerObs.pipe(
concatMap(x => myPredicate(x).pipe(
filter(subx => subx == true), // filter by sub value
mapTo(x) // map sub value back to outer value
))
).subcribe()
请参阅此合并映射与排气映射与开关映射与连接映射比较以选择正确的一个。
希望这有帮助