【发布时间】:2017-04-23 20:05:32
【问题描述】:
我有一个按排序顺序排列的事件流。每个事件都是具有关键属性的组的一部分 - 它的 ID。对于非 ID 属性,这些事件具有不同的值。我希望在 ID 更改之前忽略除最终事件之外的所有事件。例如
{ID:1, Prop: "V1"}, {ID:1, Prop:"V2"}, {ID:1, Prop:"V3"}, {ID:2, Prop:"V1"}, {ID:2, Prop:"V2"}, {ID:2, Prop:"V3"}, {ID:2, Prop:"V25"}, {ID:3, Prop:"V1"}, {ID:3, Prop:"V8"}
我只想发射:
{ID:1, Prop:"V3"},{ID:2, Prop:"V25"},{ID:3, Prop:"V8"}
我使用了GroupBy id,然后使用了TakeLast(1),但是据我所知,TakeLast 将等到流完成,并且似乎可能需要更多的内存更长的时间。我知道,只要我在流中看到不同的 ID,我就已经看到了该 ID 序列中的最后一个 - 所以我想在看到 key 属性发生变化时立即发出该值。我猜有点像distinctUntilChange,但给了我最后一个值。
我希望在流中看到带有ID:2 的第一个元素时立即发出第一个元素。
我考虑过缓冲之类的东西,但我仍然在反应。有什么想法吗?
【问题讨论】:
标签: system.reactive reactive-programming