RxJava 学习笔记<十四> merge 操作符

merge

merge 可以将一组 observables 合并为一组,由此产生的 observables 的发射值 由源observables 到发射值,这意味着发出的值来之不同序列的值。

merge有许多重载是提供一组可观测数据以进行合并的不同方法,下面是一个Merge做什么的例子

输出:

conat 和 merge 之间的区别在于,merge 不等待当前可观察到的终止后才转移到下一个。merge 订阅它所能看到的每一个可观察到的项,并在它们出现时发出项。在这种方式下,合并类似于 flatMap 的 flattening 部分。

与其他静态方法的组合程序一样,merge 有一个替代方法,允许您在链中逐个合并序列。该运算符称为mergewith,其行为是相同的。下面的示例与上面的示例具有相同的结果。

mergeDelayError

对于 merge,只要任何源序列失败,合并序列也会失败。该行为的另一个替代方法是MergeDelayError,它将延迟错误的释放,并继续合并没有失败的序列中的值。

在下一个例子中,我们合并两个每隔100ms发射一次的观测值。一个早期失败,而另一个可观察到的继续完成。

输出:

在开始时,两个可观测物发出相同的值。在值 1 之后,第一个序列失败,合并后的序列只使用第二个序列中的值继续。

当合并两个以上的序列时,合并后的序列将继续,直到所有源都成功终止或出现错误。如果多个序列失败,则合并序列中的错误类型为CompositeException。

输出:

原文链接:

https://github.com/Froussios/Intro-To-RxJava/blob/master/Part%203%20-%20Taming%20the%20sequence/4.%20Combining%20sequences.md

有什么讨论的内容,可以加我微信公众号:

猜你喜欢

转载自my.oschina.net/u/2277632/blog/1810239