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(),但似乎没有办法用该运算符进行像这样的一次性缓冲区。
我认为 @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再次订阅相同的蒸汽,但这次是无缓冲的。
| 归档时间: |
|
| 查看次数: |
6632 次 |
| 最近记录: |