RxJS 运算符 waitUntil

del*_*hum 5 rxjs

a: 1---2-3-4--5---6
b: ------T---------

o: ------1234-5---6
Run Code Online (Sandbox Code Playgroud)

使用RxJS,是否有一些运算符可以完成上图?我有一个流 A,它是一个随机事件流,给定一个具有单个true事件的流 B,我可以有一个输出流,在该事件之前不发出任何内容true,然后发送在此之前和之后保存的所有内容正常发射?

我想也许我可以使用buffer(),但似乎没有办法用该运算符进行像这样的一次性缓冲区。

mar*_*tin 2

我认为 @ZahiC 的解决方案是正确的,但就我个人而言,我会使用multicast运算符在单个链中完成它。

a$.pipe(
  multicast(new Subject(), s => concat(
    s.pipe(
      buffer(b$),
      take(1),
    ),
    s
  )),
)
Run Code Online (Sandbox Code Playgroud)

multicast基本上会将流分成两个,其中concat首先订阅第一个被缓冲直到b$发出的流。然后它会立即完成,因为take(1)concat再次订阅相同的蒸汽,但这次是无缓冲的。