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