首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >concatMap对flatMap

concatMap对flatMap
EN

Stack Overflow用户
提问于 2018-04-28 09:25:15
回答 2查看 1K关注 0票数 0

我被来自concatMapconcatMap参数搞糊涂了,这听起来很像MAX_CONCURRENCY

预取:要从当前可观察到的对象中预取的元素数。

Q1:它是否意味着从Observable预取元素以进行映射,然后按顺序一次订阅一个元素?

例如,concatMapSingle的文档非常清楚:

将上游项映射到SingleSources中,并一个接一个地订阅它们,如果这个可观察的或当前的内部SingleSource失败,则发出它们的成功值或立即终止。

Q2:可以将concatMap文档改写为:

将上游项目映射到ObservableSources并一个接一个地订阅它们?

concatMap文档的原始版本

返回一个新的可观察到的项,该项是通过应用向源ObservableSource发出的每个项提供的函数而产生的,该函数返回一个ObservableSource,然后发出通过连接这些结果ObservableSources而产生的项。

也就是说,下面的行基本上是相同的(就MAX_CONCURRENCY而言)?

代码语言:javascript
复制
int MAX_CONCURRENCY = 1;
Observable.just(1, 2, 3).flatMap(num -> Observable.just(num), false, MAX_CONCURRENCY);
Observable.just(1, 2, 3).concatMap(num -> Observable.just(num));
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-04-28 11:19:58

Q1:它是否意味着从可观察到的映射中预取元素,然后按顺序订阅一个元素?

在当前的concatMap实现中,上游项是预取的,但直到前一个内部源完成(或者是第一个项)才被映射。内部资源是一个接一个运行的。

Q2: concatMap文档可以重定义为:

我还会在第一句中提到错误行为,就像使用concatMapSingle一样。欢迎你。

一些较旧的javadocs的措辞有点复杂,而更新的javadocs则更快。那些老的也让我很恼火,但是除非他们需要一些扩展--因为StackOverflow对他们的问题和误解增加了--我倾向于不去管他们。

下面的行基本上是相同的(就MAX_CONCURRENCY而言)?

对于Observable,没有背压,所以concatMapflatMap都必须排队等待上游项目,直到它们准备好被映射和订阅为止。concatMapprefetch提示应该更像capacityHint,因为它用于对包含额外值的内部队列进行大小调整。

票数 1
EN

Stack Overflow用户

发布于 2018-04-28 09:39:13

TL博士:这是真的。找到答案了论GitHub

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50074936

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档