在 RxClojure 中,这里有六个需要关注的运算符
RxCpp 将此运算符实现为 merge
。
RxGroovy 将此运算符实现为 merge
、mergeWith
和 mergeDelayError
。
merge
的实例版本是 mergeWith
,因此,例如,在上面的代码示例中,您可以编写 odds.mergeWith(evens)
,而不是编写 Observable.merge(odds,evens)
。
mergeWith(Observable)
如果传递给 merge
的任何单个可观察对象以 onError
通知终止,则由 merge
生成的可观察对象本身将立即以 onError
通知终止。如果您希望在报告错误之前继续发出剩余的无错误可观察对象的结果,请改用 mergeDelayError
。
RxJava 将此运算符实现为 merge
、mergeWith
和 mergeDelayError
。
您还可以将 List<>
(或其他可迭代对象)中的可观察对象、可观察对象的数组,甚至发出可观察对象的集合传递给 merge
,而不是将多个可观察对象(最多九个)传递给 merge
,merge
将它们的输出合并到单个可观察对象的输出中。
merge
的实例版本是 mergeWith
,因此,例如,您可以编写 odds.mergeWith(evens)
,而不是编写 Observable.merge(odds,evens)
。
如果传递给 merge
的任何单个可观察对象以 onError
通知终止,则由 merge
生成的可观察对象本身将立即以 onError
通知终止。如果您希望在报告错误之前继续发出剩余的无错误可观察对象的结果,请改用 mergeDelayError
。
RxKotlin 将此运算符实现为 merge
、mergeWith
和 mergeDelayError
。
您还可以将 List<>
(或其他可迭代对象)中的可观察对象、可观察对象的数组,甚至发出可观察对象的集合传递给 merge
,而不是将多个可观察对象(最多九个)传递给 merge
,merge
将它们的输出合并到单个可观察对象的输出中。
merge
的实例版本是 mergeWith
,因此,例如,您可以编写 odds.mergeWith(evens)
,而不是编写 Observable.merge(odds,evens)
。
如果传递给 merge
的任何单个可观察对象以 onError
通知终止,则由 merge
生成的可观察对象本身将立即以 onError
通知终止。如果您希望在报告错误之前继续发出剩余的无错误可观察对象的结果,请改用 mergeDelayError
。
Rx.NET 将此运算符实现为 Merge
。
RxPY 将此运算符实现为 merge
和 merge_all
/merge_observable
。
Rx.rb 将此运算符实现为 merge
、merge_concurrent
和 merge_all
。
merge_concurrent
作用于发出可观察对象的集合,将来自这些可观察对象中每一个的发出的事件合并到它自己的发出事件中。您可以选择将一个整数参数传递给它,指示 merge_concurrent
应该尝试同时订阅这些发出的可观察对象的个数。一旦它达到这个最大订阅计数,它将不再订阅源可观察对象发出的任何其他可观察对象,直到其中一个已订阅的可观察对象发出 onCompleted
通知为止。默认值为 1,这使其等效于 merge_all
。
RxScala 实现这个操作符为 flatten
、flattenDelayError
、merge
和 mergeDelayError
。
RxSwift 实现这个操作符为 merge
。