我有两个需要合并的观察点。
observA: | ----- A B C D E ---------------------------F G H------>
observB: | ------------------X ---------------X-------------X---->
=========================================================
result: |-------------------A----------------<NULL>--------F---->
|---- part A ----| |- part B --|
Part A
或任何part
将在100毫秒内完成。 parts
之间的时间要长得多。单词:如果observB
发出项目,则应该继续使用或不使用值observB
但是如果observA
发出,则应该等待observB
所以,我到目前为止只是part 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
答案 0 :(得分:1)
听起来你可以沿着这些方向使用:
Observable.defer(() => {
return observA$.withLatestFrom(observB$.take(1).startWith(null), v => v)
})
.take(1)
.repeat()
.subscribe(...);
始终是observB$
的第一个值,然后等到发射observA$
。然后,它使用take(1).repeat()
重复此过程。