Inspection
我们对数据的操作并不只是过滤,有时我们需要提取需要的数据。接下来的一系列方法用于检索给定队列,每个方法都返回一个单值的可观测物队列作为结果,它们都是异步的。
Any
Any扩展方法的重载返回一个在source sequence(源队列)没有任何值的时候返回false的可观测物队列,如果源队列产生了值,在第一个值产生后立刻完成。如果收到的第一条消息是错误消息,则会传递这条错误消息。
Output:
1
The subject has any values? True
subject completed
如果我们移除OnNext(1)这一行,输出将变成下面这样:
subject completed
The subject has any values? False
除非source sequence(源队列)的第一条消息就是一条错误信息,否则Any方法将会返回True
Output:
subject OnError : System.Exception: Fail
.Any() OnError : System.Exception: Fail
Any也有一个接受一个断言(Func类型委托参数)的重载,这使它可以有效的配合Where方法一起工作
Create方法配合Any方法的例子:
All
All扩展方法与Any方法相似,除了所有值都必须符合断言(Func类型委托参数),如果有一个值不符合断言,就会返回false并完成队列。如果source sequence(源队列)是空的,则会返回true。错误将会被传递给All方法的订阅者。
Output:
1
2
6
All values less than 5? False
all completed
2
1
subject completed
RX早期的IsEmpty方法已经消失了,可以像下面这样使用All来代替:
满满的贡献啊
@Oncle:谢谢鼓励,我还担心会不会污染了贵站日志区的时间线……毕竟大家都在发独立游戏的内容,只有我在不停的发这些技术细节,心里虚虚的……(其实我也想快点发独立作品,不过还是特别想学好RX活用到项目上233)
@joey1258:你想多了,有人愿意看技术文章的。
@Oncle:哈哈,那就好:)