merge 能够将一组 observables 合并为一组,由此产生的 observables 的发射值 由源observables 到发射值,这意味着发出的值来之不一样序列的值。ios
merge有许多重载是提供一组可观测数据以进行合并的不一样方法,下面是一个Merge作什么的例子git
输出:github
conat 和 merge 之间的区别在于,merge 不等待当前可观察到的终止后才转移到下一个。merge 订阅它所能看到的每个可观察到的项,并在它们出现时发出项。在这种方式下,合并相似于 flatMap 的 flattening 部分。微信
与其余静态方法的组合程序同样,merge 有一个替代方法,容许您在链中逐个合并序列。该运算符称为mergewith,其行为是相同的。下面的示例与上面的示例具备相同的结果。spa
mergeDelayErrorit
对于 merge,只要任何源序列失败,合并序列也会失败。该行为的另外一个替代方法是MergeDelayError,它将延迟错误的释放,并继续合并无失败的序列中的值。io
在下一个例子中,咱们合并两个每隔100ms发射一次的观测值。一个早期失败,而另外一个可观察到的继续完成。ast
输出:程序
在开始时,两个可观测物发出相同的值。在值 1 以后,第一个序列失败,合并后的序列只使用第二个序列中的值继续。方法
当合并两个以上的序列时,合并后的序列将继续,直到全部源都成功终止或出现错误。若是多个序列失败,则合并序列中的错误类型为CompositeException。
输出:
原文连接:
https://github.com/Froussios/Intro-To-RxJava/blob/master/Part%203%20-%20Taming%20the%20sequence/4.%20Combining%20sequences.md
有什么讨论的内容,能够加我微信公众号: