Rx操作符详解:Concat、Merge与窗口操作符
1. Concat操作符
Rx的Concat操作符与其他LINQ实现有相同的概念,它将两个输入序列组合成一个序列,先输出第一个输入序列的所有项,接着输出第二个输入序列的所有项。实际上,Rx比一些LINQ提供程序更强大,它可以接受一组输入并将它们全部连接起来。
不过,这个操作符的使用有一个前提,即第一个流最终要完成。因为冷流通常在订阅时开始产生项,Concat操作符不想在等待第一个流完成时缓冲第二个源的项,所以它在第一个流完成之前不会订阅第二个流。这也意味着,当与热源一起使用时,Concat可能会产生不确定的结果。如果需要一个包含两个热源所有项的可观察源,可以使用Merge操作符。
2. Rx查询操作符
Rx的主要目标之一是简化处理多个可能独立且异步产生项的可观察源的工作。其设计者常提到“编排和同步”,即系统中可能同时有很多事情在进行,但应用程序需要以某种连贯的方式对事件做出反应。许多Rx操作符就是为了实现这一目标而设计的。
需要注意的是,并非所有Rx操作符都是由Rx的独特需求驱动的。一些非标准操作符(如Scan)在其他LINQ提供程序中也很有意义,并且其中很多操作符的版本在.NET的交互式扩展(Ix)中可用于 IEnumerable<T> ,这些扩展可以在 System.Interactive NuGet包中找到。
3. Merge操作符
Merge操作符将两个或多个可观察序列的所有元素合并为一个可观察序列。以处理鼠标输入为例,在Windows UI编程中,鼠标按下和释
超级会员免费看
订阅专栏 解锁全文


被折叠的 条评论
为什么被折叠?



