【问题标题】:Create an observable that emits all values so far创建一个迄今为止发出所有值的可观察对象
【发布时间】:2019-11-25 16:06:23
【问题描述】:

我有一个Observable<Foo>,它发出一些值但从未完成。我们称之为source。我想创建一个Observable<[Foo]>,它会在source 发出时发出到目前为止source 发出的所有项目。

例如,如果source 发出 a then b then c,则结果必须发出 [a] then [a, b] then [a, b, c]。

如何做到这一点?

非常感谢任何帮助!

【问题讨论】:

  • 您可以使用 scan 运算符,其中累加器是一个数组,并且闭包会在每个新事件上添加一个元素:introtorx.com/Content/v1.0.10621.0/07_Aggregation.html#Scan 但是这很奇怪,而且会变得非常如果你不小心的话,速度很慢很疯狂。
  • @Alexander-ReinstateMonica 我的 observable 寿命很短,所以你的想法非常适合我的需求。如果您创建答案,我会将其标记为已接受。谢谢!
  • 完成。另请记住,数组复制将使您发出的事件成为O(number_of_historical_events),而不是通常使用常规事件的O(1)
  • 很高兴知道,谢谢

标签: swift reactive-programming rx-swift


【解决方案1】:

您可以使用扫描运算符,其中累加器是一个数组,并且闭包会在每个新事件上添加一个元素。

http://introtorx.com/Content/v1.0.10621.0/07_Aggregation.html#Scan

然而这很奇怪,如果你不小心的话,很快就会变得非常缓慢和疯狂。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-05
    • 2020-01-09
    • 1970-01-01
    • 2019-04-23
    • 2020-02-11
    相关资源
    最近更新 更多