我有三个(或更多)可观察的序列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
调用中排序,但我觉得有更好的方法。这种方法的一个问题是我现在依赖于记录时间戳的粒度。