我想检查
System.Reactive.IObserable<TElement>
是否包含任何元素。
Any()
扩展方法不起作用,因为它期望返回 IObserable<bool>
而不是仅仅的 bool。System.Reactive.IObserable<TElement>
是否包含任何元素。
Any()
扩展方法不起作用,因为它期望返回 IObserable<bool>
而不是仅仅的 bool。IObservable<bool> IObservable<T>.Any()
这个扩展方法并不无用:它获取一个可观察序列,该序列尽快发出一个 bool
值,表示源可观察序列是否发出了任何值。这是由以下两个事件中的任何一个触发的:
源序列发出 OnCompleted
。在这种情况下,它没有发出任何值,因此 Any
序列会先发出 OnNext(false)
,然后发出 OnCompleted
。
源序列发出 OnNext
。 因此,Any
序列会先发出 OnNext(true)
,然后发出 OnCompleted
。
如果您想得到结果的 bool
而不是 IObservable<bool>
,则可以在 async
上下文中使用 await
操作符等待 Any
可观察序列。
IObservable<Prizes> prizes = ...;
bool winner = await prizes.Any();