我有两个需要合并的可观察对象。
observA: | ----- A B C D E ---------------------------F G H------>
observB: | ------------------X ---------------X-------------X---->
=========================================================
result: |-------------------A----------------<NULL>--------F---->
|---- part A ----| |- part B --|
A 部分
或任何 部分
将在 100 毫秒窗口内发生。 部分
之间的时间要长得多。换句话说:如果 observB
发出一个项目,它应该在有或没有 observB
值的情况下继续但是如果 observA
发出,它应该等待 observB
所以,到目前为止,我所拥有的只是A部分
的解决方案
| ----- A B C D E -------->
| ------------------X ---->
===========zip===============
|-------------------A----->
Observable.zip(
observA$.throttle(100),
observB$, (a, b => a)
.subscribe(...)
它不适用于 part B
,因为它将等待 observA
。我不确定如何用 RxJS 解决这个问题,所以会有任何帮助。也许我不应该只对 RxJs 这样做。任何帮助将不胜感激
更新:Solution ,感谢@martin
最佳答案
听起来你可以按照这些思路使用一些东西:
Observable.defer(() => {
return observA$.withLatestFrom(observB$.take(1).startWith(null), v => v)
})
.take(1)
.repeat()
.subscribe(...);
它总是从 observB$
获取第一个值,然后一直等到发射 observA$
。然后它用 take(1).repeat()
重复这个过程。
关于javascript - 结合两个可观察对象,其中一个是可选的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46792932/