展平多个流,仅包含最后一个流的事件

Flatten multiple streams, with events of only of the last stream

x 是一个流。在每个事件中,我都会生成一个流 x_i,它本身会产生事件。从这个设置中,我想生成一个仅包含最近 x_i 事件的扁平化输出流,直到 x 结束:

x:   ├─┬───┬─────┬────────┤
x_3:   │   │     └─E────H───I─...
x_2:   │   └─B───D────G───────...
x_1:   └─A─────C────F─────────...

预期的结果是

     ├───A───B───D─E────H─┤

我不能在 x 上使用 flatMap,因为这样所有 x_i 事件都会合并到输出流中,而不仅仅是最近的子流。

我也不能使用 concatMap 因为 x_i 是无限的,输出流实际上是 x_1.

在我看来这是一个相当普遍的场景,因此我的问题是:这是否可能使用标准 RxDart(我正在使用),或者我需要自己实现吗?

您要查找的是 swtichLatest rxdart

的运算符

http://reactivex.io/documentation/operators/switch.html