【发布时间】:2012-04-24 14:34:45
【问题描述】:
我有三个(或更多)bool 的可观察序列:
IObservable<bool> a0 = ...;
IObservable<bool> a1 = ...;
IObservable<bool> a2 = ...;
这些序列主要生成false 值,但偶尔会有true(序列也可以为空)。我对值本身不感兴趣,而是对true 值的顺序感兴趣。所以如果a0是true,那么a2是真的,最后是a1,我想执行一些操作:
(a0, a2, a1) => ...do something...
但如果true 值以另一个顺序出现,我想做点别的:
(a2, a1, a0) => ...do something else...
(a0, a1, a2) => ...do something entirely else...
所以我只对每个序列的第一个 true 值感兴趣,并且根据它们出现的顺序,我想执行一些操作。
我可以记录每次第一次出现true 的时间戳,然后在CombineLatest 调用中进行排序,但我觉得有更好的方法。这种方法的一个问题是我现在依赖于记录时间戳的粒度。
【问题讨论】:
-
他们能否在任何其他 observable 触发 true 之前再次触发
true?这是一场“滚动”比赛,还是在三个人都比赛后重新开始? -
我只对第一个
true值感兴趣。之后,我处置了观察者。 -
我已经根据这个和其他一些幼稚的假设给出了答案。但是,整体方法应该转化为多种场景。
标签: c# .net system.reactive