【发布时间】: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