如何在 Reactive Extension C# 中将 IObserable<bool> 转换为 bool

How to Convert IObserable<bool> to bool in Reactive Extension C#

我想检查 System.Reactive.IObserable<TElement> 是否包含任何元素。 Any() 扩展方法无用,因为它期望 return IObserable<bool> 而不是 bool.

IObservable<bool> IObservable<T>.Any() 扩展方法并非无用:它会尽快获取一个发出 bool 的可观察对象,指示源可观察对象是否发出任何值。当发生以下两个事件之一时,就会发生这种情况:

  • 源序列发出 OnCompleted。在这种情况下,它没有发出任何值,所以 Any 序列发出 OnNext(false) 然后 OnCompleted.

  • 源序列发出 OnNext。所以 Any 序列发出 OnNext(true) 然后 OnCompleted.

如果您想要 bool 而不是 IObservable<bool> 作为结果,您可以 awaitasync 上下文中观察到 Any

    IObservable<Prizes> prizes = ...;
    bool winner = await prizes.Any();