【问题标题】:Flatten multiple streams, with events of only of the last stream展平多个流,仅包含最后一个流的事件
【发布时间】:2019-03-16 06:53:07
【问题描述】:

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(我正在使用),还是我需要自己实现?

【问题讨论】:

    标签: flutter reactive-programming reactivex rxdart


    【解决方案1】:

    你要找的是swtichLatest rxdart 的操作符

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

    【讨论】:

    • flatMap 就是这样做的。我不能使用它,因为来自所有x_i 的所有事件都会最终出现在输出流中,而不仅仅是来自最新x_i 的事件,请参阅“预期结果”。
    • 您不能将您的流传输到take 或first 吗?
    • 我不知道怎么做:我想观察x_i 的所有事件,直到创建x_(i+1)。事件的数量是未知的。
    • 谢谢——当我浏览文档时不应该停止滚动...正是我要找的东西!
    • 在package:stream_transform 中也以switchLatest 的形式实现为StreamTransformer,而不是要求对Rx 的完全支持。 pub.dartlang.org/documentation/stream_transform/latest/…
    猜你喜欢
    • 1970-01-01
    • 2014-11-21
    • 2013-04-25
    • 2018-04-26
    • 1970-01-01
    • 1970-01-01
    • 2022-01-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多