RxJava中的concatMap和flatMap有什么区别

似乎这两个功能非常相似。它们具有相同的签名(接受rx.functions.Func1<? super T, ? extends Observable<?

extends R>>

func),并且它们的大理石图看起来完全相同。无法在此处粘贴图片,但这是用于concatMap的图片,这是用于flatMap的图片。在结果的描述中似乎存在一些细微的差异Observable,其中所产生的concatMap包含通过合并产生的可观察变量产生的项目,而所产生的flatMap包含通过首先合并所产生的可观察变量并发出合并结果而产生的项目。

但是,这种微妙之处对我来说还不清楚。任何人都可以更好地解释这种差异,理想情况下可以提供一些示例来说明这种差异。

回答:

如您所写,这两个函数非常相似,而细微的区别是创建输出的方式(应用映射功能之后)。

平面地图使用合并运算符,而concatMap使用concat运算符。

如您所见,concatMap输出序列是有序的-在

合并第二个Observable发射的任何项目之前,先发射第一个Observable发射的所有项目,同时合并flatMap输出序列-

合并的Observable发射的项目可能会出现在任何顺序,无论它们来自哪个可观察来源。

以上是 RxJava中的concatMap和flatMap有什么区别 的全部内容, 来源链接: utcz.com/qa/400362.html

回到顶部