合并两个可观察量,一个是可选的

时间:2017-10-17 14:45:18

标签: javascript rxjs

我有两个需要合并的观察点。

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

1 个答案:

答案 0 :(得分:1)

听起来你可以沿着这些方向使用:

Observable.defer(() => {
    return observA$.withLatestFrom(observB$.take(1).startWith(null), v => v)
  })
  .take(1)
  .repeat()
  .subscribe(...);

始终是observB$的第一个值,然后等到发射observA$。然后,它使用take(1).repeat()重复此过程。