问题标签 [concatmap]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
7 回答
31831 浏览

java - RxJava 中的 concatMap 和 flatMap 有什么区别

看起来这两个功能非常相似。它们具有相同的签名(接受rx.functions.Func1<? super T, ? extends Observable<? extends R>> func),并且它们的大理石图看起来完全相同。无法在此处粘贴图片,但这是concatMap的一张,这是flatMap的一张。对 results的描述似乎存在一些细微的差别Observable,其中一个由concatMapcontains 产生的项是由连接结果 Observables 产生的,而一个由flatMapcontains 产生的项是由首先合并产生的 Observables 并发出该合并的结果而产生的。

但是,我完全不清楚这种微妙之处。谁能更好地解释这种差异,最好举一些例子来说明这种差异。

0 投票
1 回答
414 浏览

jointable - 执行嵌套 concatMap 以实现连接多个表的最佳方法是什么?

在 RethinkDB 网站的 concatMap api 页面上,它说 eqJoin 是用 concatMap + getAll 实现的,它应该提供比其他连接更好的性能。

就我而言,我想加入多个表,这是一个示例,假设我有 3 个表usersdepartmentscompanies。在每个user文档中都会包含一个department idcompany id。例如:

我想在连接查询后得到的结果与 concatMap/eqJoin 的结果非常相似,但包含所有 3 个表:

这是我写的一个可以得到结果的查询:

我的问题:

  1. 有一个更好的方法吗?
  2. 上述查询的性能是否仍然与 2 个表上的通常 eqJoin 一样好?
  3. 在这些情况下,使用合并的性能是否比使用 eqJoin (concatMap) 差得多?

非常感谢。

0 投票
1 回答
2852 浏览

rx-java - RxJava - flatmap vs concatMap - 为什么在订阅时订购相同?

根据这个线程conCatMap 和 flatmap 仅在发出项目的顺序上有所不同。所以我做了一个测试并创建了一个简单的整数流,并想看看它们会以什么顺序发出。我做了一个小的 observable,它可以接收 1-5 范围内的数字并将它们乘以 2。简单的。

这是带有平面图的代码:

以及使用 concatMap 的完全相同的代码:

当我在日志中看到打印出来时,两者的顺序都是一样的,为什么?我以为只有 concatMap 会保留顺序?

0 投票
2 回答
635 浏览

android - Observable concatMap 由于某些原因在主线程上做事

我有一个 Observables 链和一个对话框,在一切完成后关闭。顺序是:1 api 调用获取 ResponseBody 2 获取响应主体进程(不是 ui 线程) 3 其他进程(不是 ui 线程)

在第一次通话期间,对话没问题,当涉及到第二次通话时,我收到了第一次通话的正文,对话被阻止,其余时间保持不变。

一切都完成后最后,但我收到一条警告说“该应用程序正在主线程上做很多工作”。

我没有在主线程上做任何事情,所以我真的不明白如何取消阻止对话框并将所有内容保存在单独的线程上。

0 投票
1 回答
902 浏览

rx-java - 链接具有不同发射类型的多个可观察对象

我试图弄清楚如何将可观察对象链接在一起。我有一个现有的方法:public static Observable<Data> getData(). 在我的另一堂课中,我有这个现有的代码:

我现在想将getData()呼叫链接到此呼叫。我该怎么做?我最初尝试过这个:

但这不起作用,因为 getData() 代码实际上是在主线程上执行的。

即使这样也行不通:

另外,当我尝试这个时,问题是这zipWith意味着两个 observables 并行运行,我真的希望一个接一个地运行。

0 投票
3 回答
1753 浏览

android - RxJava flatMapIterable 与 concatMap

我有 2 个改装电话需要进行 A 和 B:

(A):返回一个 ArrayList

(B):获取 (A) 的结果,它是一个 ArrayList。(B) 遍历 ArrayList 并使用每个进行改造调用,并将结果数据组合成最终的 ArrayList,该 ArrayList 将发送给我的订阅者 onNext()

我能够让它与平面图一起使用,但解决方案不是很优雅。据我了解,更好的解决方案是将 flatMapIterable 与 concatMap 一起使用,但我似乎无法采用我对 flatMapIterable 和 concatMap 所做的工作。

这是我到目前为止所拥有的,但它不会编译:

错误是:

在此处输入图像描述

0 投票
1 回答
503 浏览

android - RxJava concatMap 无响应

希望你们做得好,我一直在使用 RxJava 和 Retrofit 开发个人 Android 项目。PublishSubject这是对 GitHub 问题的搜索请求,当用户单击搜索按钮并使用对象发出搜索文本时,我收到了用户的输入。

我将这个发射映射到这样的Observable使用改造

List结果我期待Issues

但我的代码似乎有一些实现问题,因为它从不从网络发出任何东西,甚至没有调用错误。我已经使用Observable从 Retrofit API 获得的相同示例进行了测试,因此没有改造错误,因此我认为我的concatMap逻辑存在一些问题。任何帮助都感激不尽

0 投票
1 回答
233 浏览

javascript - Rx.Observable.prototype.fromEvent() 的奇怪行为

今天我在使用 RxJS 时看到了一个奇怪的问题。请帮我检查一下。

我正在处理的问题是:“给定一组图像 URL,将所有图像加载并附加到 div。”

要演示的所有代码片段都在这里:

https://pastebin.com/F3ZkH3F8

一开始,我使用the first snippet.

但是,Rx.Observable.prototype.flatMap有时会以错误的顺序排列图像(文档中注意到了这种行为)。所以,我改用concatMapsecond snippet)。

这一次,只加载了第一张图片。我花了一些时间检查问题。我怀疑该事件load不是从image. 但最令人困惑的情况是,当我添加一些代码来仅侦听image'sload事件时,它表明该事件已正确触发......(third snippet)。

然后我决定用$.Deferred( fourth snippet) 写另一个版本。

有效...

你能告诉我有什么问题吗?非常感谢!

0 投票
2 回答
534 浏览

angular - 使用 concatMap 时重复调用

我想在视图中显示用户注册的下一个即将发生的事件。

为此,我需要首先检索用户注册的最近事件(及时),然后检索该事件的信息。

用户注册的事件列表是动态的,我需要连续使用两个 Observable 的事件信息也是动态的。

所以我尝试使用 concatMap 但我可以看到 getEvent 函数被调用了 11 次......我不明白为什么以及如何更好地做到这一点。

这是我的控制器

EventService(包含调用 11 次的 getEvent 函数)

最后是我的观点

0 投票
1 回答
4246 浏览

rxjs - 当一个 observable 出错时,ConcatMap 中断

我有以下代码:

如果setData对任何中间节点抛出错误,则不会恢复下一个节点序列。我们如何修改它,以便即使一个节点出现错误,也会执行下一个节点序列?我读过onErrorResumeNext但我不知道如何在这里使用它。

的方法签名setData如下: