我有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
呼叫中排序,但我有一种感觉,有更好的方法。这种方法的一个问题是我现在依赖记录时间戳的粒度。
他们能任何其他可观察火灾的真实之前再次触发一个'真'?这是一场'滚动'比赛吗,还是三次比赛都开始了? – yamen 2012-04-23 12:42:48
我只对第一个'真正'价值感兴趣。之后,我处理观察员。 – 2012-04-23 12:44:04
我已经根据这个和其他一些天真的假设给出了答案。但是,总体方法应该转化为一些情景。 – yamen 2012-04-23 13:08:16